Compare commits

..

3 Commits

Author SHA1 Message Date
Roy Marples
79fe5af027 Release openrc-0.5.0 2009-06-05 09:18:47 +01:00
Roy Marples
401def2b8f Ignore more foo 2009-06-05 09:17:18 +01:00
Roy Marples
be3dd0b8e4 Update copyright 2009-06-05 09:15:55 +01:00
115 changed files with 419 additions and 1148 deletions

View File

@@ -2,9 +2,11 @@
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name> # Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
include Makefile.inc NAME= openrc
VERSION= 0.5.0
PKG= ${NAME}-${VERSION}
SUBDIR= conf.d etc init.d man scripts sh src SUBDIR= conf.d etc init.d man sh src
# Build our old net foo or not # Build our old net foo or not
_OLDNET_SH= case "${MKOLDNET}" in \ _OLDNET_SH= case "${MKOLDNET}" in \
@@ -14,14 +16,6 @@ _OLDNET_SH= case "${MKOLDNET}" in \
_OLDNET!= ${_OLDNET_SH} _OLDNET!= ${_OLDNET_SH}
SUBDIR+= ${_OLDNET}$(shell ${_OLDNET_SH}) SUBDIR+= ${_OLDNET}$(shell ${_OLDNET_SH})
# Build pkgconfig or not
_PKGCONFIG_SH= case "${MKPKGCONFIG}" in \
[Yy][Ee][Ss]|"") echo "pkgconfig";; \
*) echo "";; \
esac
_PKGCONFIG!= ${_PKGCONFIG_SH}
SUBDIR+= ${_PKGCONFIG}$(shell ${_PKGCONFIG_SH})
# We need to ensure that runlevels is done last # We need to ensure that runlevels is done last
SUBDIR+= runlevels SUBDIR+= runlevels

View File

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

8
README
View File

@@ -11,7 +11,6 @@ PROGLDFLAGS=-static
LIBNAME=lib64 LIBNAME=lib64
DESTDIR=/tmp/openrc-image DESTDIR=/tmp/openrc-image
MKPAM=pam MKPAM=pam
MKPKGCONFIG=no
MKTERMCAP=ncurses MKTERMCAP=ncurses
MKTERMCAP=termcap MKTERMCAP=termcap
MKOLDNET=yes MKOLDNET=yes
@@ -41,7 +40,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
@@ -58,15 +57,14 @@ If you installed OpenRC from your chosen distribution, you should report
bugs directly to them. For example, if you use Gentoo and emerged OpenRC bugs directly to them. For example, if you use Gentoo and emerged OpenRC
then you should reports bugs to http://bugs.gentoo.org. then you should reports bugs to http://bugs.gentoo.org.
Otherwise, you can report them directly to me at Otherwise, you can report them directly to me at http://bugs.marples.name
http://roy.marples.name/projects/openrc
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,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.

1
conf.d/.gitignore vendored
View File

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

View File

@@ -1,19 +1,14 @@
DIR= ${CONFDIR} DIR= ${CONFDIR}
CONF= bootmisc fsck hostname local localmount network staticroute urandom CONF= bootmisc fsck hostname local localmount network urandom
TARGETS+= network staticroute TARGETS+= network
CLEANFILES+= network staticroute CLEANFILES+= network
MK= ../mk MK= ../mk
include ${MK}/os.mk include ${MK}/os.mk
include Makefile.${OS} include Makefile.${OS}
include ${MK}/scripts.mk include ${MK}/scripts.mk
SOS?= BSD network: network.in network.${OS}
cp network.in network
network: network.in network.${SOS} [ -e network.${OS} ] && cat network.${OS} >> network || true
cp $@.in $@
[ -e $@.${SOS} ] && cat $@.${SOS} >> $@ || true
staticroute: staticroute.${SOS}
cp $@.${SOS} $@

View File

@@ -1 +1,3 @@
CONF+= ipfw moused powerd rarpd savecore syscons CONF+= ipfw moused powerd rarpd savecore syscons
network.${OS}:

View File

@@ -1,2 +1 @@
CONF+= consolefont dmesg hwclock keymaps modules CONF+= consolefont dmesg hwclock keymaps modules
SOS= Linux

View File

@@ -1 +1,3 @@
CONF+= moused rarpd savecore CONF+= moused rarpd savecore
network.${OS}:

View File

@@ -13,11 +13,6 @@
#fsck_passno=">1" #fsck_passno=">1"
#fsck_passno="<2" #fsck_passno="<2"
# 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,11 +1,11 @@
# 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 to set the Hardware Clock to the current System Time # If you want to set the Hardware Clock to the current System Time
# (software clock) 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,4 +0,0 @@
# You can assign a default route
#defaultroute="192.168.0.1"
#defaultroute6="2001:a:b:c"

View File

@@ -1,20 +1,8 @@
# 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 # ifconfig under Linux is not that powerful and doesn't easily handle
# multiple addresses # multiple addresses
# On the other hand, ip (iproute2) is quite powerful and is also supported # 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" #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 # Create a bonded interface
#interfaces="bond0" #interfaces="bond0"
#ifup_bond0="modprobe bonding; ifconfig \$int up; ifenslave \$int bge0" #ifup_bond0="modprobe bonding; ifconfig \$int up; ifenslave \$int bge0"

View File

@@ -9,6 +9,8 @@
# You should note that we don't stop the network at system shutdown by default. # You should note that we don't stop the network at system shutdown by default.
# If you really need this, then set shutdown_network=YES # If you really need this, then set shutdown_network=YES
# You can assign a default route
#defaultroute="192.168.0.1"
# Lastly, the interfaces variable pulls in virtual interfaces that cannot # Lastly, the interfaces variable pulls in virtual interfaces that cannot
# be automatically detected. # be automatically detected.
#interfaces="br0 bond0 vlan0" #interfaces="br0 bond0 vlan0"
@@ -24,5 +26,3 @@
# If you require DHCP, you should install dhcpcd and it to the boot or # If you require DHCP, you should install dhcpcd and it to the boot or
# default runlevel. # 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

@@ -12,7 +12,7 @@
# kernel then remove the IPv6 address from your config. # kernel then remove the IPv6 address from your config.
# If you want to use a static address or use DHCP explicitly, jump # If you want to use a static address or use DHCP explicitly, jump
# down to the section labeled INTERFACE HANDLERS. # down to the section labelled INTERFACE HANDLERS.
# #
# If you want to do anything more fancy, you should take the time to # If you want to do anything more fancy, you should take the time to
# read through the rest of this file. # read through the rest of this file.
@@ -22,10 +22,10 @@
# #
# We now support modular networking scripts which means we can easily # We now support modular networking scripts which means we can easily
# add support for new interface types and modules while keeping # add support for new interface types and modules while keeping
# compatibility with existing ones. # compatability with existing ones.
# #
# Modules load by default if the package they need is installed. If # Modules load by default if the package they need is installed. If
# you specify a module here that doesn't have its package installed # 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. # 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 # Ideally, you only use the modules setting when you have two or more
# packages installed that supply the same service. # packages installed that supply the same service.
@@ -43,6 +43,11 @@
# (eth0:1, eth0:2, etc) # (eth0:1, eth0:2, etc)
# iproute2 does not do this as there is no need to # 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" #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 can also use IPv6 addresses
# (you should always specify a prefix length with IPv6 here) # (you should always specify a prefix length with IPv6 here)
@@ -96,8 +101,8 @@
#modules="iwconfig" #modules="iwconfig"
# ifconfig (iwconig) support is a one shot script - wpa_supplicant is daemon # ifconfig (iwconig) support is a one shot script - wpa_supplicant is daemon
# that scans, associates and re-configures if association is lost. # that scans, assoicates and re-configures if assocation is lost.
# We call it iwconfig to separate the wireless setup from ifconfig. # We call it iwconfig to seperate the wireless setup from ifconfig.
#################################### ####################################
# HINTS # HINTS
# #
@@ -182,7 +187,7 @@
#dns_servers_001122334455="192.168.0.1 192.168.0.2" #dns_servers_001122334455="192.168.0.1 192.168.0.2"
# Map a MAC address to an SSID # Map a MAC address to an SSID
# This is used when the Access Point is not broadcasting its 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 # WARNING: This will override the SSID being broadcast due to some
# Access Points sending an SSID even when they have been configured # Access Points sending an SSID even when they have been configured
# not to! # not to!
@@ -193,7 +198,7 @@
# This lists the preferred SSIDs to connect to in order # This lists the preferred SSIDs to connect to in order
# SSID's can contain any characters here as they must match the broadcast # SSID's can contain any characters here as they must match the broadcast
# SSID exactly. # SSID exactly.
# Surround each SSID with the " character and separate them with a space # 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 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 # If this isn't defined then it connects to the first one found
#preferred_aps="SSID1 SSID2" #preferred_aps="SSID1 SSID2"
@@ -208,9 +213,9 @@
# any other available AP # any other available AP
# "preferredonly" means it will only connect to visible APs in the preferred # "preferredonly" means it will only connect to visible APs in the preferred
# list # list
# "forcepreferred" means it will forcibly connect to APs in order if it does # "forcepreferred" means it will forceably connect to APs in order if it does
# not find them in a scan # not find them in a scan
# "forcepreferredonly" means it forcibly connects to the APs in order and # "forcepreferredonly" means it forceably connects to the APs in order and
# does not bother to scan # does not bother to scan
# "forceany" does the same as forcepreferred + connects to any other # "forceany" does the same as forcepreferred + connects to any other
# available AP # available AP
@@ -237,12 +242,12 @@
################################################## ##################################################
# wpa_supplicant # wpa_supplicant
# emerge net-wireless/wpa_supplicant # emerge net-wireless/wpa-supplicant
# Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf # Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf
# Consult the wpa_supplicant.conf.example that is installed in # Console the wpa_supplicant.conf.example that is installed in
# /usr/share/doc/wpa_supplicant # /usr/share/doc/wpa_supplicant
# By default we don't wait for wpa_supplicant to associate and authenticate. # 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 # If you would like to, so can specify how long in seconds
#associate_timeout_eth0=60 #associate_timeout_eth0=60
# A value of 0 means wait forever. # A value of 0 means wait forever.
@@ -320,7 +325,7 @@
# Set generic DHCP options like so # Set generic DHCP options like so
#dhcp_eth0="release nodns nontp nonis nogateway nosendhost" #dhcp_eth0="release nodns nontp nonis nogateway nosendhost"
# This tells the dhcp client to release its lease when it stops, not to # 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 # 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. # 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 # You can use any combination of the above options - the default is not to

View File

@@ -12,7 +12,7 @@
# kernel then remove the IPv6 address from your config. # kernel then remove the IPv6 address from your config.
# If you want to use a static address or use DHCP explicitly, jump # If you want to use a static address or use DHCP explicitly, jump
# down to the section labeled INTERFACE HANDLERS. # down to the section labelled INTERFACE HANDLERS.
# #
# If you want to do anything more fancy, you should take the time to # If you want to do anything more fancy, you should take the time to
# read through the rest of this file. # read through the rest of this file.
@@ -23,10 +23,10 @@
# #
# We now support modular networking scripts which means we can easily # We now support modular networking scripts which means we can easily
# add support for new interface types and modules while keeping # add support for new interface types and modules while keeping
# compatibility with existing ones. # compatability with existing ones.
# #
# Modules load by default if the package they need is installed. If # Modules load by default if the package they need is installed. If
# you specify a module here that doesn't have its package installed # 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. # 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 # Ideally, you only use the modules setting when you have two or more
# packages installed that supply the same service. # packages installed that supply the same service.
@@ -70,6 +70,11 @@
# iproute2 does not do this as there is no need to # 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" #config_eth0="192.168.0.2/24 192.168.0.3/24 192.168.0.4/24"
# However, that only works with CIDR addresses, so you can't use netmask. # However, that only works with CIDR addresses, so you can't use netmask.
# Or you can use sequence expressions
#config_eth0="192.168.0.{2..4}/24"
# 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 can also use IPv6 addresses
# (you should always specify a prefix length with IPv6 here) # (you should always specify a prefix length with IPv6 here)
@@ -106,7 +111,7 @@
# Each module described below can set a default base metric, lower is # Each module described below can set a default base metric, lower is
# preferred over higher. This is so we can prefer a wired route over a # preferred over higher. This is so we can prefer a wired route over a
# wireless route automatically. You can override this by setting # wireless route automaticaly. You can override this by setting
#metric_eth0="100" #metric_eth0="100"
# or on a global basis # or on a global basis
#metric="100" #metric="100"
@@ -253,7 +258,7 @@
#key_SSID="s:foobar enc open" #key_SSID="s:foobar enc open"
#key_SSID="1234-5678-9012 enc open" #key_SSID="1234-5678-9012 enc open"
# You may want to set multiple keys - here's an example # You may want to set muliple keys - here's an example
# It sets 4 keys on the card and instructs to use key 2 by default # It sets 4 keys on the card and instructs to use key 2 by default
#key_SSID="[1] s:passkey1 key [2] s:passkey2 key [3] s:passkey3 key [4] s:passkey4 key [2]" #key_SSID="[1] s:passkey1 key [2] s:passkey2 key [3] s:passkey3 key [4] s:passkey4 key [2]"
@@ -283,7 +288,7 @@
#dns_servers_001122334455="192.168.0.1 192.168.0.2" #dns_servers_001122334455="192.168.0.1 192.168.0.2"
# Map a MAC address to an SSID # Map a MAC address to an SSID
# This is used when the Access Point is not broadcasting its 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 # WARNING: This will override the SSID being broadcast due to some
# Access Points sending an SSID even when they have been configured # Access Points sending an SSID even when they have been configured
# not to! # not to!
@@ -294,7 +299,7 @@
# This lists the preferred SSIDs to connect to in order # This lists the preferred SSIDs to connect to in order
# SSID's can contain any characters here as they must match the broadcast # SSID's can contain any characters here as they must match the broadcast
# SSID exactly. # SSID exactly.
# Surround each SSID with the " character and separate them with a space # 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 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 # If this isn't defined then it connects to the first one found
#preferred_aps="SSID1 SSID2" #preferred_aps="SSID1 SSID2"
@@ -307,9 +312,9 @@
# "any" means it will connect to visible APs in the preferred list and then any # "any" means it will connect to visible APs in the preferred list and then any
# other available AP # other available AP
# "preferredonly" means it will only connect to visible APs in the preferred list # "preferredonly" means it will only connect to visible APs in the preferred list
# "forcepreferred" means it will forcibly connect to APs in order if it does not find # "forcepreferred" means it will forceably connect to APs in order if it does not find
# them in a scan # them in a scan
# "forcepreferredonly" means it forcibly connects to the APs in order and does not bother # "forcepreferredonly" means it forceably connects to the APs in order and does not bother
# to scan # to scan
# "forceany" does the same as forcepreferred + connects to any other available AP # "forceany" does the same as forcepreferred + connects to any other available AP
# Default is "any" # Default is "any"
@@ -336,16 +341,16 @@
############################################################ ############################################################
# wpa_supplicant # wpa_supplicant
# emerge net-wireless/wpa_supplicant # emerge net-wireless/wpa-supplicant
# Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf # Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf
# Consult the wpa_supplicant.conf.example that is installed in # Console the wpa_supplicant.conf.example that is installed in
# /usr/share/doc/wpa_supplicant # /usr/share/doc/wpa_supplicant
# To configure wpa_supplicant # To configure wpa_supplicant
#wpa_supplicant_ath0="-Dmadwifi" # For Atheros based cards #wpa_supplicant_ath0="-Dmadwifi" # For Atheros based cards
# Consult wpa_supplicant for more drivers - the default is -Dwext which should # Consult wpa_supplicant for more drivers - the default is -Dwext which should
# work for most cards. # work for most cards.
# By default we don't wait for wpa_supplicant to associate and authenticate. # By default we don't wait for wpa_suppliant to associate and authenticate.
# If you need to change this behaviour then you don't know how our scripts work # If you need to change this behaviour then you don't know how our scripts work
# and setting this value could cause strange things to happen. # and setting this value could cause strange things to happen.
# If you would like to, so can specify how long in seconds. # If you would like to, so can specify how long in seconds.
@@ -448,7 +453,7 @@
# Set generic DHCP options like so # Set generic DHCP options like so
#dhcp_eth0="release nodns nontp nonis nogateway nosendhost" #dhcp_eth0="release nodns nontp nonis nogateway nosendhost"
# This tells the dhcp client to release its lease when it stops, not to # 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 # 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. # 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 # You can use any combination of the above options - the default is not to
@@ -572,7 +577,7 @@
#config_bond0="null" # You may not want to assign an IP the the bond #config_bond0="null" # You may not want to assign an IP the the bond
# You can also configure the bond here, which must be done via sysfs on 2.6 # You can also configure the bond here, which must be done via sysfs on 2.6
# kernels or newer. See the kernel bonding documentation for a description of # kernels or newer. See the kernel bonding documention for a description of
# these options. # these options.
#arp_ip_target_bond0="+26.0.0.0" #arp_ip_target_bond0="+26.0.0.0"
@@ -658,7 +663,7 @@
# #
# Dead peer detection # Dead peer detection
# lcp-echo-interval 15 # Send a LCP echo every 15 seconds # lcp-echo-interval 15 # Send a LCP echo every 15 seconds
# lcp-echo-failure 3 # Make peer dead after 3 consecutive # lcp-echo-failure 3 # Make peer dead after 3 consective
# # echo-requests # # echo-requests
# #
# Compression options - use these to completely disable compression # Compression options - use these to completely disable compression
@@ -822,8 +827,8 @@
#config_nas0="'192.168.0.1/24'" #config_nas0="'192.168.0.1/24'"
#----------------------------------------------------------------------------- #-----------------------------------------------------------------------------
# Tunneling # Tunnelling
# WARNING: For tunneling it is highly recommended that you # WARNING: For tunnelling it is highly recommended that you
# emerge sys-apps/iproute2 # emerge sys-apps/iproute2
# #
# For GRE tunnels # For GRE tunnels
@@ -838,7 +843,7 @@
# 6to4 Tunnels allow IPv6 to work over IPv4 addresses, provided you # 6to4 Tunnels allow IPv6 to work over IPv4 addresses, provided you
# have a non-private address configured on an interface. # have a non-private address configured on an interface.
# link_6to4="eth0" # Interface to base its addresses on # link_6to4="eth0" # Interface to base it's addresses on
# config_6to4="ip6to4" # config_6to4="ip6to4"
# You may want to depend on eth0 like so # You may want to depend on eth0 like so
#rc_need_6to4="net.eth0" #rc_need_6to4="net.eth0"
@@ -848,7 +853,7 @@
# sit0 - otherwise use a different name like 6to4 in the example above. # sit0 - otherwise use a different name like 6to4 in the example above.
# You can also specify a relay and suffix if you like. # You can also specify a relay and suffix if you like.
# The default relay is 192.88.99.1 and the default suffix is :1 # The default relay is 192.88.99.1 and the defualt suffix is :1
#relay_6to4="192.168.3.2" #relay_6to4="192.168.3.2"
#suffix_6to4=":ff" #suffix_6to4=":ff"
@@ -896,7 +901,7 @@
# and you're done :) # and you're done :)
# By default we don't wait for netplug/ifplugd to configure the interface. # By default we don't wait for netplug/ifplugd to configure the interface.
# If you would like it to wait so that other services know that network is up # If you would like it to wait so that other services now that network is up
# then you can specify a timeout here. # then you can specify a timeout here.
#plug_timeout="10" #plug_timeout="10"
# A value of 0 means wait forever. # A value of 0 means wait forever.
@@ -936,8 +941,8 @@
#preup() { #preup() {
# # Test for link on the interface prior to bringing it up. This # # Test for link on the interface prior to bringing it up. This
# # only works on some network adapters and requires the # # only works on some network adapters and requires the mii-diag
# # sys-apps/net-tools package to be installed. # # package to be installed.
# if mii-tool "${IFACE}" 2> /dev/null | grep -q 'no link'; then # if mii-tool "${IFACE}" 2> /dev/null | grep -q 'no link'; then
# ewarn "No link on ${IFACE}, aborting configuration" # ewarn "No link on ${IFACE}, aborting configuration"
# return 1 # return 1
@@ -987,7 +992,7 @@
# # 'from 24.80.102.112/32 to 192.168.1.0/24 table localnet priority 100' \ # # 'from 24.80.102.112/32 to 192.168.1.0/24 table localnet priority 100' \
# # 'from 216.113.223.51/32 to 192.168.1.0/24 table localnet priority 100' \ # # 'from 216.113.223.51/32 to 192.168.1.0/24 table localnet priority 100' \
# #" # #"
# eval set -- \$rules_${IFVAR} # eval set -- $\rules_${IFVAR}
# if [ $# != 0 ]; then # if [ $# != 0 ]; then
# einfo "Adding IP policy routing rules" # einfo "Adding IP policy routing rules"
# eindent # eindent
@@ -998,7 +1003,7 @@
# else # else
# for x; do # for x; do
# ebegin "${x}" # ebegin "${x}"
# ip rule add ${x} # ip rule add ${x} dev "${IFACE}"
# eend $? # eend $?
# done # done
# fi # fi

View File

@@ -2,7 +2,7 @@
# 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
@@ -11,8 +11,7 @@
# 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. # If we need to drop to a shell, you can specify it here.
@@ -76,14 +75,8 @@
# 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"
# Below is the default list of network fstypes. # Network fstypes. Below is the default.
# net_fs_list="afs cifs coda davfs fuse gfs ncpfs nfs nfs4 ocfs2 shfs smbfs"
# 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

View File

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

View File

@@ -14,7 +14,7 @@ depend()
use logger use logger
after bootmisc modules after bootmisc modules
before dns dhcpcd net before dns dhcpcd net
keyword -shutdown keyword noshutdown
} }
find_wireless() find_wireless()
@@ -24,9 +24,7 @@ find_wireless()
case "$RC_UNAME" in case "$RC_UNAME" in
Linux) Linux)
for iface in /sys/class/net/*; do for iface in /sys/class/net/*; do
if [ -e "$iface"/wireless -o \ if [ -e "$iface"/wireless ]; then
-e "$iface"/phy80211 ]
then
echo "${iface##*/}" echo "${iface##*/}"
return 0 return 0
fi fi

3
init.d/.gitignore vendored
View File

@@ -24,7 +24,6 @@ mount-ro
mtab mtab
numlock numlock
procfs procfs
staticroute
sysfs sysfs
devdb devdb
hostid hostid
@@ -35,8 +34,6 @@ rc-enabled
rpcbind rpcbind
savecore savecore
swap-blk swap-blk
swclock
syslogd syslogd
termencoding
ttys ttys
wscons wscons

View File

@@ -1,7 +1,6 @@
DIR= ${INITDIR} DIR= ${INITDIR}
SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in netmount.in \ SRCS= bootmisc.in fsck.in hostname.in local.in localmount.in netmount.in \
network.in root.in savecache.in staticroute.in swap.in swclock.in \ network.in root.in savecache.in swap.in sysctl.in urandom.in
sysctl.in urandom.in
BIN= ${OBJS} BIN= ${OBJS}
# Build our old net foo or not # Build our old net foo or not

View File

@@ -22,7 +22,7 @@ depend()
[ "$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()

View File

@@ -4,10 +4,11 @@
depend() depend()
{ {
use hostname
need localmount need localmount
before logger before logger
after clock sysctl after clock sysctl
keyword -prefix keyword noprefix
} }
dir_writeable() dir_writeable()
@@ -25,7 +26,7 @@ cleanup_tmp_dir()
mkdir -p "$dir" || return $? mkdir -p "$dir" || return $?
fi fi
dir_writeable "$dir" || return 1 dir_writeable "$dir" || return 1
chmod a+rwt "$dir" chmod +t "$dir"
cd "$dir" cd "$dir"
if yesno $wipe_tmp; then if yesno $wipe_tmp; then
ebegin "Wiping $dir directory" ebegin "Wiping $dir directory"
@@ -35,12 +36,6 @@ cleanup_tmp_dir()
# Faster than find # Faster than find
rm -rf -- [^ajlq\.]* rm -rf -- [^ajlq\.]*
# pam_mktemp creates a .private directory within which
# each user gets a private directory with immutable
# bit set; remove the immutable bit before trying to
# remove it.
[ -d /tmp/.private ] && chattr -R -a /tmp/.private 2> /dev/null
find $startopts ! -name . \ find $startopts ! -name . \
! -path "./lost+found" \ ! -path "./lost+found" \
! -path "./lost+found/*" \ ! -path "./lost+found/*" \
@@ -54,6 +49,8 @@ cleanup_tmp_dir()
! -path "./aquota.group/*" \ ! -path "./aquota.group/*" \
! -path "./journal" \ ! -path "./journal" \
! -path "./journal/*" \ ! -path "./journal/*" \
! -path "./.private" \
! -path "./.private/*" \
-exec rm -rf {} \; -exec rm -rf {} \;
eend 0 eend 0
else else
@@ -79,10 +76,9 @@ start()
# Remove any added console dirs # Remove any added console dirs
rm -rf "$RC_LIBEXECDIR"/console rm -rf "$RC_LIBEXECDIR"/console
local logw=false runw=false extra= local logw=false runw=false
# Ensure that our basic dirs exist # Ensure that our basic dirs exist
[ "$RC_UNAME" = Linux ] && extra=/var/lib/misc # Satisfy Linux FHS for x in /var/log /var/run /tmp; do
for x in /var/log /var/run /tmp $extra; do
if ! [ -d $x ]; then if ! [ -d $x ]; then
if ! mkdir -p $x; then if ! mkdir -p $x; then
eend 1 "failed to create needed directory $x" eend 1 "failed to create needed directory $x"
@@ -98,7 +94,7 @@ start()
for x in "" $xtra; do for x in "" $xtra; do
mkutmp /var/run/utmp$x mkutmp /var/run/utmp$x
done done
[ -e /var/log/wtmp ] || mkutmp /var/log/wtmp [ -e /var/log/wtmp ] && mkutmp /var/log/wtmp
eend 0 eend 0
ebegin "Cleaning /var/run" ebegin "Cleaning /var/run"
@@ -109,7 +105,7 @@ start()
# Clean stale sockets # Clean stale sockets
if [ -S "$x" ]; then if [ -S "$x" ]; then
if type fuser >/dev/null 2>&1; then if type fuser >/dev/null 2>&1; then
fuser "$x" >/dev/null 2>&1 || rm -- "$x" fuser "$x" 2>/dev/null || rm -- "$x"
else else
rm -- "$x" rm -- "$x"
fi fi
@@ -153,7 +149,7 @@ start()
fi fi
fi fi
[ -w /etc/nologin ] && rm -f /etc/nologin rm -f /etc/nologin
return 0 return 0
} }

View File

@@ -8,7 +8,7 @@ depend()
{ {
need localmount termencoding need localmount termencoding
after hotplug bootmisc after hotplug bootmisc
keyword -openvz -prefix -uml -vserver -xenu -lxc keyword noopenvz noprefix nouml novserver noxenu
} }
start() start()
@@ -45,10 +45,8 @@ start()
[ -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
fi
x=$(($x + 1)) x=$(($x + 1))
done done
eend $retval eend $retval

View File

@@ -10,7 +10,7 @@ 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

@@ -6,7 +6,7 @@ description="Mount system critical filesystems in /dev."
depend() { depend() {
use dev use dev
keyword -prefix -vserver keyword noprefix novserver
} }
start() { start() {

View File

@@ -7,7 +7,7 @@ description="Set the dmesg level for a cleaner boot"
depend() depend()
{ {
before dev modules before dev modules
keyword -vserver keyword novserver
} }
start() start()

View File

@@ -6,7 +6,7 @@ description="Configures a specific kernel dump device."
depend() { depend() {
need swap need swap
keyword -jail -prefix keyword nojail noprefix
} }
start() { start() {

View File

@@ -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() {
@@ -30,6 +30,33 @@ _forcefsck()
[ -e /forcefsck ] || get_bootparam forcefsck [ -e /forcefsck ] || get_bootparam forcefsck
} }
_on_ac_power()
{
if [ -f /proc/acpi/ac_adapter/AC/state ]; then
cat /proc/acpi/ac_adapter/AC/state | while read line; do
case "$line" in
"state:"*"off-line") return 128;;
esac
done
elif [ -f /proc/pmu/info ]; then
cat /proc/pmu/info | while read line; do
case "$line" in
"AC Power"*": 0") return 128;;
esac
done
elif type envstat >/dev/null 2>&1; then
# NetBSD has envstat
envstat -d acpiacad0 2>/dev/null | while read line; do
case "$line" in
"connected:"*"OFF") return 128;;
esac
done
else
return 0
fi
[ $? != 128 ]
}
start() start()
{ {
local fsck_opts= p= check_extra= local fsck_opts= p= check_extra=
@@ -41,7 +68,7 @@ start()
if _forcefsck; then if _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 elif ! _on_ac_power; then
ewarn "Skipping fsck due to not being on AC power" ewarn "Skipping fsck due to not being on AC power"
return 0 return 0
fi fi

View File

@@ -9,7 +9,7 @@ depend()
{ {
use root use root
before devd net before devd net
keyword -jail -prefix keyword nojail noprefix
} }
_set() _set()

View File

@@ -5,7 +5,7 @@
description="Sets the hostname of the machine." description="Sets the hostname of the machine."
depend() { depend() {
keyword -prefix keyword noprefix
} }
start() start()

View File

@@ -28,7 +28,7 @@ depend()
else else
before * before *
fi fi
keyword -openvz -prefix -uml -vserver -xenu -lxc keyword noopenvz noprefix nouml novserver noxenu
} }
setupopts() setupopts()
@@ -118,7 +118,7 @@ stop()
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

View File

@@ -13,7 +13,7 @@ opts="panic showstatus"
depend() { depend() {
before net before net
provide firewall provide firewall
keyword -jail keyword nojail
} }
ipfw() { ipfw() {

View File

@@ -8,14 +8,14 @@ depend()
{ {
need localmount termencoding need localmount termencoding
after bootmisc after bootmisc
keyword -openvz -prefix -uml -vserver -xenu -lxc keyword noopenvz noprefix nouml novserver noxenu
} }
start() start()
{ {
ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
: ${unicode:=$UNICODE} : ${unicode:=$UNICODE}
: ${keymap:=$KEYMAP} : =${keymap:=$KEYMAP}
: ${extended_keymaps:=$EXTENDED_KEYMAPS} : ${extended_keymaps:=$EXTENDED_KEYMAPS}
: ${windowkeys:=$SET_WINDOWSKEYS} : ${windowkeys:=$SET_WINDOWSKEYS}
: ${fix_euro:=$FIX_EURO} : ${fix_euro:=$FIX_EURO}
@@ -34,25 +34,15 @@ 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]"
local loadkeys_uni= wkeys= kmode="-a" msg="ASCII"
if yesno $unicode; then 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=$(($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
@@ -62,6 +52,20 @@ start()
eend $? eend $?
fi fi
# Set terminal encoding to either ASCII or UNICODE.
# See utf-8(7) for more information.
ebegin "Setting keyboard mode [$msg]"
if yesno $unicode; then
dumpkeys ${dumpkeys_charset:+-c} \
$dumpkeys_charset | loadkeys --unicode
fi
n=1
while [ $n -le $ttyn ]; do
kbd_mode $kmode -C $ttydev$n
n=$(($n + 1))
done
eend 0
# Save the keymapping for use immediately at boot # Save the keymapping for use immediately at boot
if [ -w "$RC_LIBEXECDIR" ]; then if [ -w "$RC_LIBEXECDIR" ]; then
mkdir -p "$RC_LIBEXECDIR"/console mkdir -p "$RC_LIBEXECDIR"/console

View File

@@ -6,7 +6,7 @@ description="Kill all processes so we can unmount disks cleanly."
depend() depend()
{ {
keyword -prefix keyword noprefix
} }
start() start()

View File

@@ -7,7 +7,7 @@ description="Executes user commands in /etc/conf.d/local"
depend() depend()
{ {
after * after *
keyword -timeout keyword notimeout
} }
start() start()
@@ -18,6 +18,11 @@ start()
local_start local_start
fi fi
# Support old configs
if [ -e @SYSCONFDIR@/conf.d/local.start ]; then
. @SYSCONFDIR@/conf.d/local.start
fi
eend $? "Failed to start local" eend $? "Failed to start local"
} }
@@ -29,5 +34,10 @@ stop()
local_stop local_stop
fi fi
# Support old configs
if [ -e @SYSCONFDIR@/conf.d/local.stop ]; then
. @SYSCONFDIR@/conf.d/local.stop
fi
eend $? "Failed to stop local" eend $? "Failed to stop local"
} }

View File

@@ -8,22 +8,19 @@ depend()
{ {
need fsck need fsck
use lvm modules mtab use lvm modules mtab
keyword -jail -openvz -prefix -vserver -lxc keyword nojail noopenvz noprefix novserver
} }
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; do for x in $net_fs_list; do
types="${types},${x}" types="${types},${x}"
done done
if [ "$RC_UNAME" = Linux ]; then
no_netdev="-O no_netdev"
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

View File

@@ -7,7 +7,7 @@ extra_commands="restore"
depend() depend()
{ {
need localmount need localmount
keyword -jail -prefix keyword nojail noprefix
} }
restore() restore()

View File

@@ -7,7 +7,7 @@ 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()

View File

@@ -7,7 +7,7 @@ description="Re-mount filesytems read-only for a clean reboot."
depend() depend()
{ {
need killprocs savecache need killprocs savecache
keyword -prefix -openvz -vserver -lxc keyword noprefix noopenvz novserver
} }
start() start()

View File

@@ -16,7 +16,7 @@ depend()
{ {
need localmount need localmount
after bootmisc after bootmisc
keyword -jail -prefix keyword nojail noprefix
} }
start() start()

View File

@@ -7,17 +7,11 @@ description="Update /etc/mtab to match what the kernel knows about"
depend() depend()
{ {
need root need root
keyword -prefix keyword noprefix
} }
start() start()
{ {
# /etc/mtab could be a symlink to /proc/mounts
if [ ! -w /etc/mtab -a -L /etc/mtab ]; then
eeinfo "Skipping mtab update (non writeable symlink)"
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"

View File

@@ -21,7 +21,7 @@ depend()
need localmount need localmount
after bootmisc after bootmisc
provide net provide net
keyword -jail -prefix -vserver keyword nojail noprefix novserver
case "${IFACE}" in case "${IFACE}" in
lo|lo0);; lo|lo0);;

View File

@@ -35,7 +35,7 @@ depend()
need net $pmap need net $pmap
use afc-client amd autofs openvpn use afc-client amd autofs openvpn
use dns nfs nfsmount portmap rpcbind rpc.statd rpc.lockd use dns nfs nfsmount portmap rpcbind rpc.statd rpc.lockd
keyword -jail -prefix -vserver keyword nojail noprefix novserver
} }
start() start()

View File

@@ -13,7 +13,7 @@ depend()
need localmount need localmount
after bootmisc after bootmisc
provide net provide net
keyword -jail -prefix -vserver keyword nojail noprefix novserver
} }
uniqify() uniqify()
@@ -57,32 +57,6 @@ sys_interfaces()
esac esac
} }
tentative()
{
local inet= address= rest=
case "$RC_UNAME" in
Linux)
[ -x /sbin/ip ] || [ -x /bin/ip ] || return 1
[ -n "$(ip -f inet6 addr show tentative)" ]
;;
*)
local inet= address= rest=
LC_ALL=C ifconfig -a | while read inet address rest; do
case "${inet}" in
inet6)
case "${rest}" in
*" "tentative*) return 2;;
esac
;;
esac
done
[ $? = 2 ]
;;
esac
}
auto_interfaces() auto_interfaces()
{ {
local ifs= c= f= local ifs= c= f=
@@ -129,28 +103,13 @@ dumpargs()
esac esac
} }
intup=false
runip() runip()
{ {
local int="$1" err= local int="$1" err=
shift shift
# Ensure we have a valid broadcast address
case "$@" in
*" broadcast "*|*" brd "*) ;;
*:*) ;; # Ignore IPv6
*) set -- "$@" brd +;;
esac
err=$(LC_ALL=C ip address add "$@" dev "$int" 2>&1) err=$(LC_ALL=C ip address add "$@" dev "$int" 2>&1)
if [ -z "$err" ]; then [ -z "$err" ] && return 0
# ip does not bring up the interface when adding addresses
if ! $intup; then
ip link set "$int" up
intup=true
fi
return 0
fi
if [ "$err" = "RTNETLINK answers: File exists" ]; then if [ "$err" = "RTNETLINK answers: File exists" ]; then
ip address del "$@" dev "$int" 2>/dev/null ip address del "$@" dev "$int" 2>/dev/null
fi fi
@@ -161,9 +120,8 @@ runip()
routeflush() routeflush()
{ {
if [ "$RC_UNAME" = Linux ]; then if [ "$RC_UNAME" = Linux ]; then
if [ -x /sbin/ip ] || [ -x /bin/ip ]; then if [ -x /sbin/ip ]; then
ip route flush scope global ip route flush scope global
ip route delete default 2>/dev/null
else else
# Sadly we also delete some link routes, but # Sadly we also delete some link routes, but
# this cannot be helped # this cannot be helped
@@ -183,8 +141,6 @@ routeflush()
esac esac
route del $flags $dest $netmask $xtra route del $flags $dest $netmask $xtra
done done
# Erase any default dev eth0 routes
route del default 2>/dev/null
fi fi
else else
route -qn flush route -qn flush
@@ -209,20 +165,12 @@ runargs()
start() start()
{ {
local cr=0 r= int= intv= cmd= args= upcmd= local cr=0 r= int= intv= cmd= args= upcmd=
if [ -z "$domainname" -a -s /etc/defaultdomain ]; then
domainname=$(cat /etc/defaultdomain)
fi
if [ -n "$domainname" ]; then
ebegin "Setting NIS domainname: $domainname"
domainname "$domainname"
eend $?
fi
einfo "Starting network" einfo "Starting network"
routeflush routeflush
if [ "$RC_UNAME" = "Linux" ]; then if [ "$RC_UNAME" = "Linux" ]; then
ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1 ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1
route add -net 127.0.0.0 netmask 255.0.0.0 \
gw 127.0.0.1 2>/dev/null
route add -net 127.0.0.0 netmask 255.0.0.0 \ route add -net 127.0.0.0 netmask 255.0.0.0 \
gw 127.0.0.1 reject 2>/dev/null gw 127.0.0.1 reject 2>/dev/null
else else
@@ -246,7 +194,7 @@ start()
-f /etc/ifup."$int" -o -f "$cf" ] || continue -f /etc/ifup."$int" -o -f "$cf" ] || continue
veinfo "$int" veinfo "$int"
case "$func" in case "$func" in
ip) func=runip; intup=false;; ip) func=runip;;
esac esac
eindent eindent
runargs /etc/ifup."$int" "$upcmd" runargs /etc/ifup."$int" "$upcmd"
@@ -275,41 +223,13 @@ start()
eoutdent eoutdent
eend $cr eend $cr
# Wait for any inet6 tentative addresses
r=5
while [ $r -gt 0 ]; do
tentative || break
[ $r = 5 ] && vebegin "Waiting for tentative addresses"
sleep 1
r=$(($r - 1))
done
if [ $r != 5 ]; then
[ $r != 0 ]
veend $?
fi
if [ -n "$defaultroute" ]; then if [ -n "$defaultroute" ]; then
ebegin "Setting default route $defaultroute" ebegin "Setting default route $defaultroute"
route add default $defaultroute
eend $?
elif [ -n "$defaultiproute" ]; then
ebegin "Setting default route $defaultiproute"
ip route add default $defaultiproute
eend $?
fi
if [ -n "$defaultroute6" ]; then
ebegin "Setting default route $defaultroute6"
if [ "$RC_UNAME" = Linux ]; then if [ "$RC_UNAME" = Linux ]; then
routecmd="route -A inet6 add" route add default gw $defaultroute
else else
routecmd="route -inet6 add" route add default $defaultroute
fi fi
$routecmd default $defaultroute6
eend $?
elif [ -n "$defaultiproute6" ]; then
ebegin "Setting default route $defaultiproute6"
ip -f inet6 route add default $defaultiproute6
eend $? eend $?
fi fi
@@ -338,11 +258,6 @@ stop()
then then
veinfo "$int" veinfo "$int"
runargs /etc/ifdown."$int" "$downcmd" runargs /etc/ifdown."$int" "$downcmd"
if [ -x /sbin/ip ] || [ -x /bin/ip ]; then
# We need to do this, otherwise we may
# fail to add things correctly on restart
ip address flush dev "$int" 2>/dev/null
fi
ifconfig "$int" down 2>/dev/null ifconfig "$int" down 2>/dev/null
ifconfig "$int" destroy 2>/dev/null ifconfig "$int" destroy 2>/dev/null
fi fi

View File

@@ -7,7 +7,7 @@ required_files="/etc/newsyslog.conf"
depend() depend()
{ {
need localmount need localmount
keyword -prefix keyword noprefix
} }
start() start()

View File

@@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
depend() depend()
{ {
need localmount need localmount
keyword -openvz -prefix -vserver -lxc keyword noopenvz noprefix novserver
} }
_setleds() _setleds()

View File

@@ -11,7 +11,7 @@ extra_started_commands="reload"
depend() { depend() {
need localmount need localmount
keyword -jail -prefix keyword nojail noprefix
} }
start() start()

View File

@@ -12,7 +12,7 @@ depend()
need localmount need localmount
use logger use logger
after bootmisc after bootmisc
keyword -jail -prefix keyword nojail noprefix
} }
start_pre() start_pre()

View File

@@ -8,12 +8,12 @@ depend()
{ {
use modules devfs use modules devfs
need localmount need localmount
keyword -openvz -prefix -vserver -lxc keyword noopenvz noprefix novserver
} }
start() start()
{ {
# Make sure we insert usbcore if it's a module # Make sure we insert usbcore if its a module
if [ -f /proc/modules -a ! -d /proc/bus/usb ]; then if [ -f /proc/modules -a ! -d /proc/bus/usb ]; then
modprobe -q usbcore modprobe -q usbcore
fi fi

View File

@@ -7,7 +7,7 @@ depend()
need localmount net need localmount net
after * after *
before local before local
keyword -prefix keyword noprefix
} }
start() start()

View File

@@ -7,7 +7,7 @@ description="Mount the root fs read/write"
depend() depend()
{ {
need fsck need fsck
keyword -jail -openvz -prefix -vserver -lxc keyword nojail noopenvz noprefix novserver
} }
start() start()

View File

@@ -22,7 +22,7 @@ start()
fi fi
fi fi
local save= local save=
for x in deptree depconfig shutdowntime softlevel nettree rc.log; do for x in deptree depconfig softlevel nettree rc.log; do
[ -e "$RC_SVCDIR/$x" ] && save="$save $RC_SVCDIR/$x" [ -e "$RC_SVCDIR/$x" ] && save="$save $RC_SVCDIR/$x"
done done
if [ -n "$save" ]; then if [ -n "$save" ]; then

View File

@@ -7,7 +7,7 @@ description="Saves a kernel dump."
depend() depend()
{ {
need localmount need localmount
keyword -jail -prefix keyword nojail noprefix
} }
start() start()

View File

@@ -1,104 +0,0 @@
#!@PREFIX@/sbin/runscript
# Copyright (c) 2009 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
# This script was inspired by the equivalent rc.d staticroute from NetBSD.
description="Configures static routes."
__nl="
"
depend()
{
provide net
use network
keyword -jail -prefix -vserver
}
pre_flight_checks()
{
route=route
[ -s /etc/route.conf ] && return 0
if [ -n "$staticiproute" ]; then
route="ip route"
staticroute="$staticiproute"
fi
}
dump_args()
{
# Route configuration file, as used by the NetBSD RC system
if [ -s /etc/route.conf ]; then
cat /etc/route.conf
return $?
fi
case "$staticroute" in
*"$__nl"*)
echo "$staticroute"
;;
*)
(
set -o noglob
IFS=';'; set -- $staticroute
IFS="$__nl"; echo "$*"
)
;;
esac
}
do_routes()
{
local xtra= family=
[ "$RC_UNAME" != Linux ] && xtra=-q
ebegin "$1 static routes"
eindent
pre_flight_checks
dump_args | while read args; do
[ -z "$args" ] && continue
case "$args" in
"#"*)
;;
"+"*)
[ $2 = "add" ] && eval ${args#*+}
;;
"-"*)
[ $2 = "del" -o $2 = "delete" ] && eval ${args#*-}
;;
*)
veinfo "$args"
case "$route" in
"ip route")
ip route $2 $args
;;
*)
# Linux route does cannot work it out ...
if [ "$RC_UNAME" = Linux ]; then
case "$args" in
*:*) family="-A inet6";;
*) family=;;
esac
fi
route $famly $xtra $2 -$args
;;
esac
veend $?
esac
done
eoutdent
eend 0
}
start()
{
do_routes "Adding" "add"
}
stop()
{
local cmd="delete"
[ "$RC_UNAME" = Linux ] && cmd="del"
do_routes "Deleting" "$cmd"
}

View File

@@ -5,7 +5,7 @@
depend() depend()
{ {
before fsck before fsck
keyword -jail -prefix keyword nojail noprefix
} }
start() start()

View File

@@ -5,7 +5,7 @@
depend() depend()
{ {
need localmount need localmount
keyword -jail -openvz -prefix -vserver -lxc keyword nojail noopenvz noprefix novserver
} }
start() start()

View File

@@ -1,28 +0,0 @@
#!@PREFIX@/sbin/runscript
# Copyright (c) 2009 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license.
description="Sets the local clock to the mtime of a given file."
depend()
{
before *
provide clock
keyword -openvz -prefix -uml -vserver -xenu -lxc
}
# swclock is an OpenRC built in
start()
{
ebegin "Setting the local clock based on last shutdown time"
swclock --warn
eend $?
}
stop()
{
ebegin "Saving the shutdown time"
swclock --save
eend $?
}

View File

@@ -4,7 +4,7 @@
depend() { depend() {
need localmount need localmount
keyword -jail -prefix keyword nojail noprefix
} }
start() { start() {

View File

@@ -4,28 +4,21 @@
depend() depend()
{ {
use hostname
before bootmisc logger before bootmisc logger
keyword -prefix keyword noprefix
} }
start() start()
{ {
[ -e /etc/sysctl.conf ] || return 0 [ -e /etc/sysctl.conf ] || return 0
local retval=0 var= comments= conf= local retval=0 var= comments=
ebegin "Configuring kernel parameters" ebegin "Configuring kernel parameters"
eindent
for conf in /etc/sysctl.d/*.conf /etc/sysctl.conf; do
if [ -r "$conf" ]; then
vebegin "applying $conf"
while read var comments; do while read var comments; do
case "$var" in case "$var" in
""|"#"*) continue;; ""|"#"*) continue;;
esac esac
sysctl -w "$var" >/dev/null || retval=1 sysctl -w "$var" >/dev/null || retval=1
done < "$conf" done < /etc/sysctl.conf
veend $retval
fi
done
eoutdent
eend $retval "Some errors were encountered" eend $retval "Some errors were encountered"
} }

View File

@@ -4,22 +4,15 @@
depend() depend()
{ {
use hostname
before bootmisc logger before bootmisc logger
keyword -openvz -prefix -vserver keyword noopenvz noprefix novserver
} }
start() start()
{ {
local conf= retval=0 [ -e /etc/sysctl.conf ] || return 0
ebegin "Configuring kernel parameters" ebegin "Configuring kernel parameters"
eindent sysctl -p >/dev/null
for conf in /etc/sysctl.d/*.conf /etc/sysctl.conf; do eend $? "Some errors were encountered"
if [ -r "$conf" ]; then
vebegin "applying $conf"
sysctl -p "$conf" >/dev/null
veend $? || retval=1
fi
done
eoutdent
eend $retval "Some errors were encountered"
} }

View File

@@ -6,7 +6,7 @@ description="Mount the sys filesystem."
depend() depend()
{ {
keyword -prefix -vserver keyword noprefix novserver
} }
mount_sys() mount_sys()

View File

@@ -16,5 +16,5 @@ depend()
use net newsyslog use net newsyslog
need localmount need localmount
after bootmisc after bootmisc
keyword -prefix keyword noprefix
} }

View File

@@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}}
depend() depend()
{ {
keyword -openvz -prefix -uml -vserver -xenu keyword noopenvz noprefix nouml novserver noxenu
} }
start() start()

View File

@@ -5,7 +5,7 @@
depend() depend()
{ {
after fsck after fsck
keyword -prefix keyword noprefix
} }
start() start()

View File

@@ -8,7 +8,7 @@ description="Initializes the random number generator."
depend() depend()
{ {
need localmount need localmount
keyword -jail -openvz -prefix keyword nojail noprefix
} }
save_seed() save_seed()

View File

@@ -5,7 +5,7 @@
depend() depend()
{ {
need localmount need localmount
keyword -prefix keyword noprefix
} }
start() start()

View File

@@ -39,7 +39,7 @@
.Nm eprefix .Nm eprefix
.Nd colorful informational output .Nd colorful informational output
.Sh LIBRARY .Sh LIBRARY
Enhanced Information output library (libeinfo, -leinfo) Enhanced Informatation output library (libeinfo, -leinfo)
.Sh SYNOPSIS .Sh SYNOPSIS
.In einfo.h .In einfo.h
.Ft int Fn einfo "const char * restrict format" ... .Ft int Fn einfo "const char * restrict format" ...

View File

@@ -36,7 +36,7 @@
.Nm .Nm
gathers and displays information about the status of services gathers and displays information about the status of services
in different runlevels. The default behavior is to show information in different runlevels. The default behavior is to show information
about the current runlevel and any unassigned services that are not stopped, about the current runlevel and any unassgined services that are not stopped,
but any runlevel can be quickly examined. but any runlevel can be quickly examined.
.Pp .Pp
The options are as follows: The options are as follows:

View File

@@ -54,7 +54,7 @@ owned by
.Fa uid , .Fa uid ,
all of which are optional. all of which are optional.
.Pp .Pp
The returned list should be freed when done. The retuned list should be freed when done.
.Sh IMPLEMENTATION NOTES .Sh IMPLEMENTATION NOTES
On BSD systems we use On BSD systems we use
.Lb libkvm .Lb libkvm

View File

@@ -42,7 +42,7 @@ is set to the hook running, and
.Fa name .Fa name
is set to the name of the runlevel or name of the service. is set to the name of the runlevel or name of the service.
.Pp .Pp
Plugins can affect the parent environment by writing NULL separated strings to Plugins can affect the parent environemnt by writing NULL separated strings to
.Va rc_environ_fd . .Va rc_environ_fd .
.Sh SEE ALSO .Sh SEE ALSO
.Xr rc 8 , .Xr rc 8 ,

View File

@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.Dd November 4, 2009 .Dd April 30, 2009
.Dt RUNSCRIPT 8 SMM .Dt RUNSCRIPT 8 SMM
.Os OpenRC .Os OpenRC
.Sh NAME .Sh NAME
@@ -39,8 +39,8 @@
.Nm .Nm
is basically an interpreter for shell scripts which provide an easy interface is basically an interpreter for shell scripts which provide an easy interface
to the often complex system commands and daemons. to the often complex system commands and daemons.
When a service runs a command it first loads its multiplexed configuration When a service runs a command it first loads it's mulitplexed configuration
file, then its master configuration file, then file, then it's master configuration file, then
.Pa /etc/rc.conf .Pa /etc/rc.conf
and finally the script itself. At this point and finally the script itself. At this point
.Nm .Nm
@@ -79,7 +79,7 @@ Ignore all dependency information the service supplies.
Only run the command if the service has been started. Only run the command if the service has been started.
.It Fl q , -quiet .It Fl q , -quiet
Turns off all informational output the service generates. Turns off all informational output the service generates.
Output from any non OpenRC commands is not affected. Output from any non OpenRC comands is not affected.
.It Fl v , -verbose .It Fl v , -verbose
Turns on any extra informational output the service generates. Turns on any extra informational output the service generates.
.It Fl Z , -dry-run .It Fl Z , -dry-run
@@ -90,9 +90,9 @@ or stopping them.
The following variables affect the service script: The following variables affect the service script:
.Bl -tag -width "RC_DEFAULTLEVEL" .Bl -tag -width "RC_DEFAULTLEVEL"
.It Ar extra_commands .It Ar extra_commands
Space separated list of extra commands the service defines. Space seperated list of extra commands the service defines.
.It Ar extra_started_commands .It Ar extra_started_commands
Space separated list of extra commands the service defines. These only work if Space seperated list of extra commands the service defines. These only work if
the service has already been started. the service has already been started.
.It Ar description .It Ar description
String describing the service. String describing the service.
@@ -128,7 +128,7 @@ will refuse to stop until any services that need it have stopped.
The service will attempt to start any services we use that have been added The service will attempt to start any services we use that have been added
to the runlevel. to the runlevel.
.It Ic after .It Ic after
The service will start after these services and stop before these services. The service will start after thse services and stop before these services.
.It Ic before .It Ic before
The service will start before these services and stop after these services. The service will start before these services and stop after these services.
.It Ic provide .It Ic provide
@@ -138,32 +138,30 @@ We should recalculate our dependencies if the listed files have changed.
.It Ic keyword .It Ic keyword
Tags a service with a keyword. Here's the keywords we currently understand:- Tags a service with a keyword. Here's the keywords we currently understand:-
.Bl -tag -width indent .Bl -tag -width indent
.It Dv -jail .It Dv nojail
When in a jail, exclude this service from any dependencies. The service can When in a jail, exclude this service from any dependencies. The service can
still be run directly. still be run directly.
.It Dv -openvz .It Dv noopenvz
Same as -jail, but for OpenVZ systems. Same as nojail, but for OpenVZ systems.
.It Dv -lxc .It Dv noshutdown
Same as -jail, but for Linux Resource Containers (LXC).
.It Dv -shutdown
Don't stop this service when shutting the system down. Don't stop this service when shutting the system down.
This normally quite safe as remaining daemons will be sent a SIGTERM just This normally quite safe as remaining daemons will be sent a SIGTERM just
before final shutdown. before final shutdown.
Network related services such as the network and dhcpcd init scripts normally Network related services such as the network and dhcpcd init scripts normally
have this keyword. have this keyword.
.It Dv -stop .It Dv nostop
Don't stop this service when changing runlevels, even if not present. Don't stop this service when changing runlevels, even if not present.
This includes shutting the system down. This includes shutting the system down.
.It Dv -timeout .It Dv notimeout
Do not time out waiting for that service. Do not time out waiting for that service.
.It Dv -uml .It Dv nouml
Same as -jail, but for UML systems. Same as nojail, but for UML systems.
.It Dv -vserver .It Dv novserver
Same as -jail, but for VServer systems. Same as nojail, but for VServer systems.
.It Dv -xen0 .It Dv noxen0
Same as -jail, but for Xen DOM0 systems. Same as nojail, but for Xen DOM0 systems.
.It Dv -xenu .It Dv noxenu
Same as -jail, but for Xen DOMU systems. Same as nojail, but for Xen DOMU systems.
.El .El
.El .El
.Pp .Pp
@@ -225,7 +223,7 @@ is newer than
return 0, otherwise 1. return 0, otherwise 1.
If If
.Ar file2 .Ar file2
is a directory, then check all its contents too. is a directory, then check all it's contents too.
.It Ic is_older_than Ar file1 Ar file2 ... .It Ic is_older_than Ar file1 Ar file2 ...
If If
.Ar file1 .Ar file1
@@ -234,7 +232,7 @@ is newer than
return 0, otherwise 1. return 0, otherwise 1.
If If
.Ar file2 .Ar file2
is a directory, then check all its contents too. is a directory, then check all it's contents too.
.It Ic service_set_value Ar name Ar value .It Ic service_set_value Ar name Ar value
Saves the Saves the
.Ar name .Ar name
@@ -320,7 +318,7 @@ Configuration files, relative to the location of the service.
If a file ending with .${RC_RUNLEVEL} exists then we use that instead. If a file ending with .${RC_RUNLEVEL} exists then we use that instead.
.Bl -ohang .Bl -ohang
.It Pa ../conf.d/${RC_SVCNAME%%.*} .It Pa ../conf.d/${RC_SVCNAME%%.*}
multiplexed configuration file. mulitplexed configuration file.
Example: if ${RC_SVCNAME} is net.eth1 then look for Example: if ${RC_SVCNAME} is net.eth1 then look for
.Pa ../conf.d/net . .Pa ../conf.d/net .
.It Pa ../conf.d/${RC_SVCNAME} .It Pa ../conf.d/${RC_SVCNAME}

View File

@@ -22,7 +22,7 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.Dd December 14, 2009 .Dd April 22, 2009
.Dt START-STOP-DAEMON 8 SMM .Dt START-STOP-DAEMON 8 SMM
.Os OpenRC .Os OpenRC
.Sh NAME .Sh NAME
@@ -43,7 +43,7 @@
.Ar daemon .Ar daemon
.Sh DESCRIPTION .Sh DESCRIPTION
.Nm .Nm
provides a consistent method of starting, stopping and signaling daemons. provides a consistent method of starting, stopping and signalling daemons.
If neither If neither
.Fl K , -stop .Fl K , -stop
nor nor
@@ -85,7 +85,7 @@ then
.Nm .Nm
matches the process matches the process
.D1 /usr/bin/perl -w foo .D1 /usr/bin/perl -w foo
If an interpreted daemon changes its process name then this won't work. If an interpreted daemon changes it's process name then this won't work.
.It Fl u , -user Ar user Ns Op : Ns Ar group .It Fl u , -user Ar user Ns Op : Ns Ar group
Start the daemon as the Start the daemon as the
.Ar user .Ar user
@@ -98,8 +98,6 @@ Print the action(s) that would be taken, but don't actually do anything.
The return value is set as if the command was taken and worked. The return value is set as if the command was taken and worked.
.It Fl v , -verbose .It Fl v , -verbose
Print the action(s) that are taken just before doing them. Print the action(s) that are taken just before doing them.
.It Fl P , -progress
Echo a . to the console for each second elapsed whilst waiting.
.El .El
.Pp .Pp
These options are only used for starting daemons: These options are only used for starting daemons:
@@ -136,10 +134,6 @@ option. Only useful when used with daemons that run in the foreground and
forced into the background with the forced into the background with the
.Fl -b , -background .Fl -b , -background
option. option.
.It Fl I , -ionice Ar class Ns Op : Ns Ar data
Modifies the IO scheduling priority of the daemon.
Class can be 0 for none, 1 for real time, 2 for best effort and 3 for idle.
Data can be from 0 to 7 inclusive.
.It Fl N , -nice Ar level .It Fl N , -nice Ar level
Modifies the scheduling priority of the daemon. Modifies the scheduling priority of the daemon.
.It Fl 1 , -stdout Ar logfile .It Fl 1 , -stdout Ar logfile
@@ -148,9 +142,9 @@ Redirect the standard output of the process to logfile when started with
Must be an absolute pathname, but relative to the path optionally given with Must be an absolute pathname, but relative to the path optionally given with
.Fl r , -chroot . .Fl r , -chroot .
The logfile can also be a named pipe. The logfile can also be a named pipe.
.It Fl w , -wait Ar milliseconds .It Fl w , -wait Ar seconds
Wait Wait
.Ar milliseconds .Ar seconds
after starting and check that daemon is still running. after starting and check that daemon is still running.
Useful for daemons that check configuration after forking or stopping race Useful for daemons that check configuration after forking or stopping race
conditions where the pidfile is written out after forking. conditions where the pidfile is written out after forking.

View File

@@ -15,14 +15,7 @@ _is_bond()
bonding_pre_start() bonding_pre_start()
{ {
local x= s= n= slaves= primary= local x= s= slaves="$(_get_array "slaves_${IFVAR}")"
slaves="$(_get_array "slaves_${IFVAR}")"
unset slaves_${IFVAR}
eval primary="\$primary_${IFVAR}"
unset primary_${IFVAR}
[ -z "${slaves}" ] && return 0 [ -z "${slaves}" ] && return 0
@@ -46,31 +39,13 @@ bonding_pre_start()
return 1 return 1
fi fi
# Interface must be down in order to configure # Configure the bond.
_down # Nice and dynamic :)
# Configure the bond mode, then we can reloop to ensure we configure
# All other options
for x in /sys/class/net/"${IFACE}"/bonding/mode; do
[ -f "${x}" ] || continue
n=${x##*/}
eval s=\$${n}_${IFVAR}
if [ -n "${s}" ]; then
einfo "Setting ${n}: ${s}"
echo "${s}" >"${x}" || \
eerror "Failed to configure $n (${n}_${IFVAR})"
fi
done
# Nice and dynamic for remaining options:)
for x in /sys/class/net/"${IFACE}"/bonding/*; do for x in /sys/class/net/"${IFACE}"/bonding/*; do
[ -f "${x}" ] || continue [ -f "${x}" ] || continue
n=${x##*/} eval s=\$${x##*/}_${IFVAR}
eval s=\$${n}_${IFVAR}
[ "${n}" != "mode" ] || continue
if [ -n "${s}" ]; then if [ -n "${s}" ]; then
einfo "Setting ${n}: ${s}" echo "${s}" >"${x}"
echo "${s}" >"${x}" || \
eerror "Failed to configure $n (${n}_${IFVAR})"
fi fi
done done
@@ -97,11 +72,6 @@ bonding_pre_start()
# finally add in slaves # finally add in slaves
eoutdent eoutdent
if [ -d /sys/class/net ]; then if [ -d /sys/class/net ]; then
if [ -n "${primary}" ]; then
echo "+${primary}" >/sys/class/net/"${IFACE}"/bonding/slaves
echo "${primary}" >/sys/class/net/"${IFACE}"/bonding/primary
slaves="${slaves/${primary}/}"
fi
for s in ${slaves}; do for s in ${slaves}; do
echo "+${s}" >/sys/class/net/"${IFACE}"/bonding/slaves echo "+${s}" >/sys/class/net/"${IFACE}"/bonding/slaves
done done
@@ -147,12 +117,6 @@ bonding_stop()
done done
) )
_down
if [ -d /sys/class/net ]; then
echo "-${IFACE}" > /sys/class/net/bonding_masters
fi
eend 0 eend 0
return 0 return 0
} }

View File

@@ -11,8 +11,7 @@ _config_vars="$_config_vars bridge bridge_add brctl"
_is_bridge() _is_bridge()
{ {
# Ignore header line so as to allow for bridges named 'bridge' brctl show 2>/dev/null | grep -q "^${IFACE}[[:space:]]"
brctl show 2>/dev/null | sed '1,1d' | grep -q "^${IFACE}[[:space:]]"
} }
bridge_pre_start() bridge_pre_start()
@@ -89,16 +88,14 @@ bridge_post_stop()
if _is_bridge; then if _is_bridge; then
ebegin "Destroying bridge ${IFACE}" ebegin "Destroying bridge ${IFACE}"
_down _down
# Ignore header line so as to allow for bridges named 'bridge'
ports="$(brctl show 2>/dev/null | \ ports="$(brctl show 2>/dev/null | \
sed -n -e '1,1d' -e '/^'"${IFACE}"'[[:space:]]/,/^\S/ { /^\('"${IFACE}"'[[:space:]]\|\t\)/s/^.*\t//p }')" sed -n -e '/^'"${IFACE}"'[[:space:]]/,/^\S/ { /^\('"${IFACE}"'[[:space:]]\|\t\)/s/^.*\t//p }')"
delete=true delete=true
iface=${IFACE} iface=${IFACE}
eindent eindent
else else
# Work out if we're added to a bridge for removal or not # Work out if we're added to a bridge for removal or not
# Ignore header line so as to allow for bridges named 'bridge' eval set -- $(brctl show 2>/dev/null | sed -e "s/'/'\\\\''/g" -e "s/$/'/g" -e "s/^/'/g")
eval set -- $(brctl show 2>/dev/null | sed -e '1,1d' -e "s/'/'\\\\''/g" -e "s/$/'/g" -e "s/^/'/g")
local line= local line=
for line; do for line; do
set -- ${line} set -- ${line}

View File

@@ -17,7 +17,6 @@ dhclient_start()
# Get our options # Get our options
# These options only work in Gentoo, and maybe RedHat # These options only work in Gentoo, and maybe RedHat
eval args=\$dhclient_${IFVAR}
eval opts=\$dhcp_${IFVAR} eval opts=\$dhcp_${IFVAR}
[ -z "${opts}" ] && opts=${dhcp} [ -z "${opts}" ] && opts=${dhcp}

View File

@@ -56,11 +56,8 @@ dhcpcd_start()
esac esac
done done
# Add our route metric if not given # Add our route metric
case " $args " in [ "${metric:-0}" != "0" ] && args="${args} -m ${metric}"
*" -m "*) ;;
*) [ "${metric:-0}" != 0 ] && args="$args -m $metric";;
esac
# Bring up DHCP for this interface # Bring up DHCP for this interface
ebegin "Running dhcpcd" ebegin "Running dhcpcd"

View File

@@ -42,8 +42,7 @@ _ifindex()
_is_wireless() _is_wireless()
{ {
# Support new sysfs layout # Support new sysfs layout
[ -d /sys/class/net/"${IFACE}"/wireless -o \ [ -d /sys/class/net/"${IFACE}"/wireless ] && return 0
-d /sys/class/net/"${IFACE}"/phy80211 ] && return 0
[ ! -e /proc/net/wireless ] && return 1 [ ! -e /proc/net/wireless ] && return 1
grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless
@@ -262,17 +261,6 @@ _tunnel()
ifconfig_pre_start() ifconfig_pre_start()
{ {
local tunnel=
eval tunnel=\$iptunnel_${IFVAR}
if [ -n "${tunnel}" ]; then
# Set our base metric to 1000
metric=1000
ebegin "Creating tunnel ${IFVAR}"
iptunnel add ${tunnel}
eend $? || return 1
_up
fi
# MTU support # MTU support
local mtu= local mtu=
eval mtu=\$mtu_${IFVAR} eval mtu=\$mtu_${IFVAR}
@@ -283,7 +271,17 @@ ifconfig_pre_start()
eval len=\$txqueuelen_${IFVAR} eval len=\$txqueuelen_${IFVAR}
[ -n "${len}" ] && ifconfig "${IFACE}" txqueuelen "${len}" [ -n "${len}" ] && ifconfig "${IFACE}" txqueuelen "${len}"
return 0 local tunnel=
eval tunnel=\$iptunnel_${IFVAR}
[ -z "${tunnel}" ] && return 0
# Set our base metric to 1000
metric=1000
ebegin "Creating tunnel ${IFVAR}"
iptunnel add ${tunnel}
eend $?
} }
ifconfig_post_stop() ifconfig_post_stop()

View File

@@ -1,18 +1,9 @@
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name> # Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
# All rights reserved. Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
_ip()
{
if [ -x /bin/ip ]; then
echo /bin/ip
else
echo /sbin/ip
fi
}
iproute2_depend() iproute2_depend()
{ {
program $(_ip) program /sbin/ip
provide interface provide interface
after ifconfig after ifconfig
} }
@@ -52,8 +43,7 @@ _ifindex()
_is_wireless() _is_wireless()
{ {
# Support new sysfs layout # Support new sysfs layout
[ -d /sys/class/net/"${IFACE}"/wireless -o \ [ -d /sys/class/net/"${IFACE}"/wireless ] && return 0
-d /sys/class/net/"${IFACE}"/phy80211 ] && return 0
[ ! -e /proc/net/wireless ] && return 1 [ ! -e /proc/net/wireless ] && return 1
grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless
@@ -167,11 +157,7 @@ _add_route()
shift shift
done done
# We cannot use a metric if we're using a nexthop if ! ${have_metric} && [ -n "${metric}" ]; then
if ! ${have_metric} && \
[ -n "${metric}" -a \
"${cmd##* nexthop }" = "$cmd" ]
then
cmd="${cmd} metric ${metric}" cmd="${cmd} metric ${metric}"
fi fi
@@ -201,6 +187,16 @@ _tunnel()
iproute2_pre_start() iproute2_pre_start()
{ {
# MTU support
local mtu=
eval mtu=\$mtu_${IFVAR}
[ -n "${mtu}" ] && ip link set "${IFACE}" mtu "${mtu}"
# TX Queue Length support
local len=
eval len=\$txqueuelen_${IFVAR}
[ -n "${len}" ] && ip link set "${IFACE}" txqueuelen "${len}"
local tunnel= local tunnel=
eval tunnel=\$iptunnel_${IFVAR} eval tunnel=\$iptunnel_${IFVAR}
if [ -n "${tunnel}" ]; then if [ -n "${tunnel}" ]; then
@@ -213,16 +209,6 @@ iproute2_pre_start()
_up _up
fi fi
# MTU support
local mtu=
eval mtu=\$mtu_${IFVAR}
[ -n "${mtu}" ] && ip link set "${IFACE}" mtu "${mtu}"
# TX Queue Length support
local len=
eval len=\$txqueuelen_${IFVAR}
[ -n "${len}" ] && ip link set "${IFACE}" txqueuelen "${len}"
return 0 return 0
} }
@@ -236,8 +222,6 @@ _iproute2_ipv6_tentative()
iproute2_post_start() iproute2_post_start()
{ {
local n=5
# Kernel may not have IP built in # Kernel may not have IP built in
if [ -e /proc/net/route ]; then if [ -e /proc/net/route ]; then
ip route flush table cache dev "${IFACE}" ip route flush table cache dev "${IFACE}"
@@ -245,16 +229,11 @@ iproute2_post_start()
if _iproute2_ipv6_tentative; then if _iproute2_ipv6_tentative; then
ebegin "Waiting for IPv6 addresses" ebegin "Waiting for IPv6 addresses"
while [ $n -ge 0 ]; do while true; do
_iproute2_ipv6_tentative || break _iproute2_ipv6_tentative || break
sleep 1
n=$(($n - 1))
done done
[ $n -ge 0 ] eend 0
eend $?
fi fi
return 0
} }
iproute2_post_stop() iproute2_post_stop()

View File

@@ -90,7 +90,7 @@ pppd_pre_start()
eval passwordset=\$\{password_${IFVAR}-x\} eval passwordset=\$\{password_${IFVAR}-x\}
if [ -n "${username}" ] \ if [ -n "${username}" ] \
&& [ -n "${password}" -o -z "${passwordset}" ]; then && [ -n "${password}" -o -z "${passwordset}" ]; then
opts="plugin passwordfd.so ${opts} passwordfd 0" opts="${opts} plugin passwordfd.so passwordfd 0"
fi fi
if ! ${hasdefaultmetric}; then if ! ${hasdefaultmetric}; then
@@ -155,7 +155,7 @@ pppd_pre_start()
opts="${opts} connect true" opts="${opts} connect true"
set -- "$@" "${link}" set -- "$@" "${link}"
fi fi
opts="plugin $1.so ${opts}" opts="${opts} plugin $1.so"
shift shift
opts="${opts} $@" opts="${opts} $@"
done done

View File

@@ -26,7 +26,7 @@ tuntap_pre_start()
return 1 return 1
fi fi
vebegin "Waiting for /dev/net/tun" vebegin "Waiting for /dev/net/tun"
# /dev/net/tun can take its time to appear # /dev/net/tun can take it's time to appear
local timeout=10 local timeout=10
while [ ! -e /dev/net/tun -a ${timeout} -gt 0 ]; do while [ ! -e /dev/net/tun -a ${timeout} -gt 0 ]; do
sleep 1 sleep 1

View File

@@ -20,7 +20,7 @@ _is_vlan()
_get_vlans() _get_vlans()
{ {
[ -e /proc/net/vlan/config ] || return 1 [ -e /proc/net/vlan/config ] || return 1
sed -n -e 's/^\W*\([^ ]*\) \(.* \) .*'"${IFACE}"'$/\1/p' /proc/net/vlan/config sed -n -e 's/^\(.*[0-9]\) \(.* \) .*'"${IFACE}"'$/\1/p' /proc/net/vlan/config
} }
_check_vlan() _check_vlan()
@@ -87,7 +87,7 @@ vlan_post_start()
# We need to work out the interface name of our new vlan id # We need to work out the interface name of our new vlan id
local ifname="$(sed -n -e \ local ifname="$(sed -n -e \
's/^\([^[:space:]]*\) *| '"${vlan}"' *| .*'"${IFACE}"'$/\1/p' \ 's/^\([^[:space:]]*\) *| '"${vlan}"' *| .*'"${iface}"'$/\1/p' \
/proc/net/vlan/config )" /proc/net/vlan/config )"
mark_service_started "net.${ifname}" mark_service_started "net.${ifname}"
( (

View File

@@ -1,2 +0,0 @@
einfo.pc
openrc.pc

View File

@@ -1,12 +0,0 @@
DIR= ${LIBDIR}/pkgconfig
SRCS= einfo.pc.in openrc.pc.in
INC= einfo.pc openrc.pc
.DEFAULT:
${SED} -n -e 's/^VERSION=[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1${GITVER}\"/p' ../../Makefile > version.h
SED_EXTRA= -e 's:@VERSION@:${VERSION}:g'
MK= ../mk
include ../Makefile.inc
include ${MK}/scripts.mk

View File

@@ -1,9 +0,0 @@
prefix=@PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/@LIB@
includedir=/usr/include
Name: einfo
Description: Pretty console informational display
Version: @VERSION@
Libs: -L${libdir} -leinfo

View File

@@ -1,10 +0,0 @@
prefix=@PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/@LIB@
includedir=/usr/include
Name: OpenRC
Description: Universal init system
Version: @VERSION@
Cflags: -I${includedir}
Libs: -L${libdir} -lrc

View File

@@ -1,5 +1,5 @@
BOOT= bootmisc fsck hostname localmount network \ BOOT= bootmisc fsck hostname localmount network \
root staticroute swap sysctl urandom root swap sysctl urandom
DEFAULT= local netmount DEFAULT= local netmount
SHUTDOWN= savecache SHUTDOWN= savecache

View File

@@ -1,5 +0,0 @@
DIR= ${LIBEXECDIR}/bin
BIN= on_ac_power
MK= ../mk
include ${MK}/scripts.mk

View File

@@ -1,37 +0,0 @@
#!/bin/sh
# Detect AC power or not in a portable way
# Copyright (c) 2007-2009 Roy Marples <roy@marples.name>
# Exit 0 if on AC power, 1 if not and 255 if we don't know how to work it out
if [ -f /proc/acpi/ac_adapter/AC*/state ]; then
cat /proc/acpi/ac_adapter/AC*/state | while read line; do
case "$line" in
"state:"*"off-line") exit 128;;
esac
done
elif [ -f /sys/class/power_supply/AC*/online ]; then
cat /sys/class/power_supply/AC*/online | while read line; do
[ "${line}" = 0 ] && exit 128
done
elif [ -f /proc/pmu/info ]; then
cat /proc/pmu/info | while read line; do
case "$line" in
"AC Power"*": 0") exit 128;;
esac
done
elif type envstat >/dev/null 2>&1; then
# NetBSD has envstat
envstat -d acpiacad0 2>/dev/null | while read line; do
case "$line" in
"connected:"*"OFF") exit 128;;
esac
done
elif sysctl -q hw.acpi.acline >/dev/null 2>/dev/null; then
case $(sysctl -n hw.acpi.acline) in
0) exit 1;;
*) exit 0;;
esac
else
exit 255
fi
[ $? != 128 ]

View File

@@ -5,7 +5,6 @@
# All rights reserved. Released under the 2-clause BSD license. # All rights reserved. Released under the 2-clause BSD license.
. @SYSCONFDIR@/init.d/functions.sh . @SYSCONFDIR@/init.d/functions.sh
. @LIBEXECDIR@/sh/rc-functions.sh
config() { config() {
[ -n "$*" ] && echo "$RC_SVCNAME config $*" >&3 [ -n "$*" ] && echo "$RC_SVCNAME config $*" >&3
@@ -83,7 +82,24 @@ do
if . "$_dir/$RC_SVCNAME"; then if . "$_dir/$RC_SVCNAME"; then
echo "$RC_SVCNAME" >&3 echo "$RC_SVCNAME" >&3
_depend depend
_rc_svcname=$(shell_var "$RC_SVCNAME")
# Add any user defined depends
for _deptype in config:CONFIG need:NEED use:USE \
after:AFTER before:BEFORE \
provide:PROVIDE keyword:KEYWORD; do
IFS=:
set -- $_deptype
unset IFS
eval _depends=\$rc_$_rc_svcname_$1
[ -z "$_depends" ] && eval _depends=\$rc_$1
[ -z "$_depends" ] && \
eval _depends=\$RC_$_rc_svcname_$2
[ -z "$_depends" ] && eval _depends=\$RC_$2
$1 ${_depends}
done
fi fi
) )
done done

View File

@@ -17,7 +17,7 @@ fi
if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/consolefont \ if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/consolefont \
-o -e /etc/runlevels/"$RC_BOOTLEVEL"/consolefont ]; then -o -e /etc/runlevels/"$RC_BOOTLEVEL"/consolefont ]; then
printf "\033%s" "$termencoding" >"$CONSOLE" 2>/dev/null printf "\033%s" "$termencoding" >"$CONSOLE" 2>/dev/null
if [ -r "$RC_LIBEXECDIR"/console/font -a -x /usr/bin/setfont ]; then if [ -r "$RC_LIBEXECDIR"/console/font -a -x /bin/setfont ]; then
font="$(cat "$RC_LIBEXECDIR"/console/font)" font="$(cat "$RC_LIBEXECDIR"/console/font)"
[ -c "$CONSOLE" ] && cons="-C $CONSOLE" [ -c "$CONSOLE" ] && cons="-C $CONSOLE"
setfont $cons "$RC_LIBEXECDIR"/console/"$font" 2>/dev/null setfont $cons "$RC_LIBEXECDIR"/console/"$font" 2>/dev/null
@@ -29,7 +29,7 @@ if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/keymaps \
-o -e /etc/runlevels/"$RC_BOOTLEVEL"/keymaps ]; then -o -e /etc/runlevels/"$RC_BOOTLEVEL"/keymaps ]; then
kbd_mode $kmode -C "$CONSOLE" 2>/dev/null kbd_mode $kmode -C "$CONSOLE" 2>/dev/null
if [ -r "$RC_LIBEXECDIR"/console/keymap ]; then if [ -r "$RC_LIBEXECDIR"/console/keymap ]; then
loadkeys -q "$RC_LIBEXECDIR"/console/keymap 2>/dev/null loadkeys "$RC_LIBEXECDIR"/console/keymap 2>/dev/null
fi fi
fi fi

View File

@@ -8,19 +8,14 @@
# tmpfs and ramfs are easy, so force one or the other. # tmpfs and ramfs are easy, so force one or the other.
mount_svcdir() mount_svcdir()
{ {
# mount from fstab if we can
fstabinfo --mount "$RC_SVCDIR" && return 0
local fs= fsopts="-o rw,noexec,nodev,nosuid" local fs= fsopts="-o rw,noexec,nodev,nosuid"
local devdir="rc-svcdir" x=
local svcsize=${rc_svcsize:-1024} local svcsize=${rc_svcsize:-1024}
# Some buggy kernels report tmpfs even when not present :(
if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems; then if grep -Eq "[[:space:]]+tmpfs$" /proc/filesystems; then
mount -n -t tmpfs $fsopts,mode=755,size=${svcsize}k \ fs="tmpfs"
rc-svcdir "$RC_SVCDIR" && return 0 fsopts="$fsopts,mode=0755,size=${svcsize}k"
fi elif grep -Eq "[[:space:]]+ramfs$" /proc/filesystems; then
if grep -Eq "[[:space:]]+ramfs$" /proc/filesystems; then
fs="ramfs" fs="ramfs"
# ramfs has no special options # ramfs has no special options
elif [ -e /dev/ram0 ] \ elif [ -e /dev/ram0 ] \
@@ -37,7 +32,10 @@ mount_svcdir()
return 1 return 1
fi fi
mount -n -t "$fs" $fsopts rc-svcdir "$RC_SVCDIR" # If we have no entry in fstab for $RC_SVCDIR, provide our own
if ! fstabinfo --mount "$RC_SVCDIR"; then
mount -n -t "$fs" $fsopts "$devdir" "$RC_SVCDIR"
fi
} }
. "$RC_LIBEXECDIR"/sh/functions.sh . "$RC_LIBEXECDIR"/sh/functions.sh
@@ -70,14 +68,4 @@ if $mountproc; then
eend $? eend $?
fi fi
# Try to mount xenfs as early as possible, otherwise rc_sys() will always
# return RC_SYS_XENU and will think that we are in a domU while it's not.
if grep -Eq "[[:space:]]+xenfs$" /proc/filesystems; then
ebegin "Mounting xenfs"
if ! fstabinfo --mount /proc/xen; then
mount -n -t xenfs xenfs /proc/xen -o nosuid,nodev,noexec
fi
eend $?
fi
. "$RC_LIBEXECDIR"/sh/init-common-post.sh . "$RC_LIBEXECDIR"/sh/init-common-post.sh

View File

@@ -38,8 +38,7 @@ stop_addon()
( import_addon "$1-stop" ) ( import_addon "$1-stop" )
} }
net_fs_list="afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre net_fs_list="afs cifs coda davfs fuse gfs ncpfs nfs nfs4 ocfs2 shfs smbfs"
ncpfs nfs nfs4 ocfs2 shfs smbfs $extra_net_fs_list"
is_net_fs() is_net_fs()
{ {
[ -z "$1" ] && return 1 [ -z "$1" ] && return 1
@@ -85,27 +84,6 @@ get_bootparam()
return 1 return 1
} }
# Called from runscript.sh or gendepends.sh
_depend() {
depend
local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends=
# Add any user defined depends
for _deptype in config:CONFIG need:NEED use:USE \
after:AFTER before:BEFORE \
provide:PROVIDE keyword:KEYWORD; do
IFS=:
set -- $_deptype
unset IFS
eval _depends=\$rc_${_rc_svcname}_$1
[ -z "$_depends" ] && eval _depends=\$rc_$1
[ -z "$_depends" ] && eval _depends=\$RC_${_rc_svcname}_$2
[ -z "$_depends" ] && eval _depends=\$RC_$2
$1 $_depends
done
}
# Add our sbin to $PATH # Add our sbin to $PATH
case "$PATH" in case "$PATH" in
"$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);; "$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);;

View File

@@ -26,8 +26,6 @@ do_unmount()
# Unmounting a shared mount can unmount other mounts, so # Unmounting a shared mount can unmount other mounts, so
# we need to check the mount is still valid # we need to check the mount is still valid
mountinfo --quiet "$mnt" || continue mountinfo --quiet "$mnt" || continue
# Ensure we interpret all characters properly.
mnt=$(printf "$mnt")
case "$cmd" in case "$cmd" in
umount) umount)
@@ -38,7 +36,7 @@ do_unmount()
;; ;;
esac esac
retry=4 # Effectively TERM, sleep 1, TERM, sleep 1, KILL, sleep 1 retry=3
while ! LC_ALL=C $cmd "$mnt" 2>/dev/null; do while ! LC_ALL=C $cmd "$mnt" 2>/dev/null; do
if type fuser >/dev/null 2>&1; then if type fuser >/dev/null 2>&1; then
pids="$(fuser $f_opts "$mnt" 2>/dev/null)" pids="$(fuser $f_opts "$mnt" 2>/dev/null)"
@@ -55,16 +53,13 @@ do_unmount()
eend 1 "in use but fuser finds nothing" eend 1 "in use but fuser finds nothing"
retry=0;; retry=0;;
*) *)
if [ $retry -le 0 ]; then local sig="KILL"
eend 1 [ $retry -gt 0 ] && sig="TERM"
else
local sig="TERM"
retry=$(($retry - 1))
[ $retry = 1 ] && sig="KILL"
fuser $f_kill$sig -k $f_opts \ fuser $f_kill$sig -k $f_opts \
"$mnt" >/dev/null 2>&1 "$mnt" >/dev/null 2>&1
sleep 1 sleep 1
fi retry=$(($retry - 1))
[ $retry -le 0 ] && eend 1
;; ;;
esac esac
[ $retry -le 0 ] && break [ $retry -le 0 ] && break

View File

@@ -25,29 +25,6 @@ shift
# Compat # Compat
export SVCNAME=$RC_SVCNAME export SVCNAME=$RC_SVCNAME
# Dependency function
config() {
[ -n "$*" ] && echo "config $*"
}
need() {
[ -n "$*" ] && echo "need $*"
}
use() {
[ -n "$*" ] && echo "use $*"
}
before() {
[ -n "$*" ] && echo "before $*"
}
after() {
[ -n "$*" ] && echo "after $*"
}
provide() {
[ -n "$*" ] && echo "provide $*"
}
keyword() {
[ -n "$*" ] && echo "keyword $*"
}
# Descript the init script to the user # Descript the init script to the user
describe() describe()
{ {
@@ -187,12 +164,6 @@ done
unset _f unset _f
while [ -n "$1" ]; do while [ -n "$1" ]; do
# Sepcial case depend
if [ "$1" = depend ]; then
shift
_depend
continue
fi
# See if we have the required function and run it # See if we have the required function and run it
for _cmd in describe start stop status ${extra_commands:-$opts} \ for _cmd in describe start stop status ${extra_commands:-$opts} \
$extra_started_commands $extra_started_commands

View File

@@ -35,7 +35,6 @@
#include <sys/stat.h> #include <sys/stat.h>
#include <errno.h> #include <errno.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#define RC_LEVEL_BOOT "boot" #define RC_LEVEL_BOOT "boot"

View File

@@ -643,7 +643,7 @@ static int EINFO_PRINTF(3, 0)
fprintf(f, "\n"); fprintf(f, "\n");
if (_eprefix) if (_eprefix)
fprintf(f, "%s%s%s|", _ecolor(f, color), _eprefix, _ecolor(f, ECOLOR_NORMAL)); fprintf(f, "%s%s%s|", _ecolor(f, color), _eprefix, _ecolor(f, ECOLOR_NORMAL));
fprintf(f, " %s*%s ", _ecolor(f, color), _ecolor(f, ECOLOR_NORMAL)); fprintf(f, "%s*%s ", _ecolor(f, color), _ecolor(f, ECOLOR_NORMAL));
retval += _eindent(f); retval += _eindent(f);
va_copy(ap, va); va_copy(ap, va);
retval += vfprintf(f, fmt, ap) + 3; retval += vfprintf(f, fmt, ap) + 3;
@@ -800,7 +800,7 @@ ebegin(const char *EINFO_RESTRICT fmt, ...)
va_start(ap, fmt); va_start(ap, fmt);
retval = _einfovn(fmt, ap); retval = _einfovn(fmt, ap);
va_end(ap); va_end(ap);
retval += printf(" ..."); retval += printf("...");
if (colour_terminal(stdout)) if (colour_terminal(stdout))
retval += printf("\n"); retval += printf("\n");
LASTCMD("ebegin"); LASTCMD("ebegin");
@@ -817,7 +817,7 @@ _eend(FILE * EINFO_RESTRICT fp, int col, ECOLOR color, const char *msg)
if (!msg) if (!msg)
return; return;
cols = get_term_columns(fp) - (strlen(msg) + 5); cols = get_term_columns(fp) - (strlen(msg) + 3);
/* cons25 is special - we need to remove one char, otherwise things /* cons25 is special - we need to remove one char, otherwise things
* do not align properly at all. */ * do not align properly at all. */
@@ -831,15 +831,18 @@ _eend(FILE * EINFO_RESTRICT fp, int col, ECOLOR color, const char *msg)
if (term_is_cons25) if (term_is_cons25)
cols--; cols--;
/* If extra spacing is required around msg, then please change
* via a runtime knob and leave this default as is as it saves 2
* valuable columns when running on 80 column screens. */
if (cols > 0 && colour_terminal(fp)) { if (cols > 0 && colour_terminal(fp)) {
fprintf(fp, "%s%s %s[%s %s %s]%s\n", up, tgoto(goto_column, 0, cols), fprintf(fp, "%s%s %s[%s%s%s]%s\n", up, tgoto(goto_column, 0, cols),
ecolor(ECOLOR_BRACKET), ecolor(color), msg, ecolor(ECOLOR_BRACKET), ecolor(color), msg,
ecolor(ECOLOR_BRACKET), ecolor(ECOLOR_NORMAL)); ecolor(ECOLOR_BRACKET), ecolor(ECOLOR_NORMAL));
} else { } else {
if (col > 0) if (col > 0)
for (i = 0; i < cols - col; i++) for (i = 0; i < cols - col; i++)
fprintf(fp, " "); fprintf(fp, " ");
fprintf(fp, " [ %s ]\n", msg); fprintf(fp, " [%s]\n", msg);
} }
} }
@@ -1027,7 +1030,7 @@ ebeginv(const char *EINFO_RESTRICT fmt, ...)
va_start(ap, fmt); va_start(ap, fmt);
retval = _einfovn(fmt, ap); retval = _einfovn(fmt, ap);
retval += printf(" ..."); retval += printf("...");
if (colour_terminal(stdout)) if (colour_terminal(stdout))
retval += printf("\n"); retval += printf("\n");
va_end(ap); va_end(ap);

View File

@@ -346,9 +346,8 @@ get_provided(const RC_DEPINFO *depinfo, const char *runlevel, int options)
get_provided1(runlevel, providers, dt, bootlevel, false, RC_SERVICE_STOPPED)) get_provided1(runlevel, providers, dt, bootlevel, false, RC_SERVICE_STOPPED))
return providers; return providers;
/* Still nothing? OK, list our first provided service. */ /* Still nothing? OK, list all services */
service = TAILQ_FIRST(dt->services); TAILQ_FOREACH(service, dt->services, entries)
if (service != NULL)
rc_stringlist_add(providers, service->value); rc_stringlist_add(providers, service->value);
return providers; return providers;
@@ -739,7 +738,7 @@ rc_deptree_update(void)
RC_STRING *s, *s2, *s2_np, *s3, *s4; RC_STRING *s, *s2, *s2_np, *s3, *s4;
char *line = NULL; char *line = NULL;
size_t len = 0; size_t len = 0;
char *depend, *depends, *service, *type, *nosys, *onosys; char *depend, *depends, *service, *type, *nosys;
size_t i, k, l; size_t i, k, l;
bool retval = true; bool retval = true;
const char *sys = rc_sys(); const char *sys = rc_sys();
@@ -803,11 +802,6 @@ rc_deptree_update(void)
continue; continue;
} }
/* Don't provide ourself */
if (strcmp(type, "iprovide") == 0 &&
strcmp(depend, service) == 0)
continue;
/* .sh files are not init scripts */ /* .sh files are not init scripts */
l = strlen(depend); l = strlen(depend);
if (l > 2 && if (l > 2 &&
@@ -847,25 +841,17 @@ rc_deptree_update(void)
* work for them. This doesn't stop them from being run directly. */ * work for them. This doesn't stop them from being run directly. */
if (sys) { if (sys) {
len = strlen(sys); len = strlen(sys);
nosys = xmalloc(len + 1); nosys = xmalloc(len + 3);
nosys[0] = '-'; nosys[0] = 'n';
nosys[1] = 'o';
for (i = 0; i < len; i++) for (i = 0; i < len; i++)
nosys[i + 1] = (char)tolower((unsigned char)sys[i]); nosys[i + 2] = (char)tolower((unsigned char)sys[i]);
nosys[i + 1] = '\0'; nosys[i + 2] = '\0';
onosys = xmalloc(len + 3);
onosys[0] = 'n';
onosys[1] = 'o';
for (i = 0; i < len; i++)
onosys[i + 2] = (char)tolower((unsigned char)sys[i]);
onosys[i + 2] = '\0';
TAILQ_FOREACH_SAFE(depinfo, deptree, entries, depinfo_np) TAILQ_FOREACH_SAFE(depinfo, deptree, entries, depinfo_np)
if ((deptype = get_deptype(depinfo, "keyword"))) if ((deptype = get_deptype(depinfo, "keyword")))
TAILQ_FOREACH(s, deptype->services, entries) TAILQ_FOREACH(s, deptype->services, entries)
if (strcmp(s->value, nosys) == 0 || if (strcmp(s->value, nosys) == 0) {
strcmp(s->value, onosys) == 0)
{
provide = get_deptype(depinfo, "iprovide"); provide = get_deptype(depinfo, "iprovide");
TAILQ_REMOVE(deptree, depinfo, entries); TAILQ_REMOVE(deptree, depinfo, entries);
TAILQ_FOREACH(di, deptree, entries) { TAILQ_FOREACH(di, deptree, entries) {
@@ -884,7 +870,6 @@ rc_deptree_update(void)
} }
} }
free(nosys); free(nosys);
free(onosys);
} }
/* Phase 3 - add our providers to the tree */ /* Phase 3 - add our providers to the tree */

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