Compare commits
	
		
			91 Commits
		
	
	
		
			openrc-0.1
			...
			openrc-0.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 8046427d7f | ||
|   | c73173ae53 | ||
|   | 2964fc47f1 | ||
|   | 0396f0ea7c | ||
|   | 78a25883f3 | ||
|   | 18dc0efa52 | ||
|   | f53645b7c7 | ||
|   | a75a9940b0 | ||
|   | e27f0acc60 | ||
|   | 5c8ba80ea7 | ||
|   | e8ad6d2423 | ||
|   | aa34435cc8 | ||
|   | 68f8e8aac2 | ||
|   | ee54bfef05 | ||
|   | 7279b469ec | ||
|   | 8482008559 | ||
|   | 463d4ef00a | ||
|   | b5629d4ea0 | ||
|   | 4385d31d9d | ||
|   | 20af890ac2 | ||
|   | 21abe9821c | ||
|   | f886372749 | ||
|   | f671e0a28f | ||
|   | 6d84a4aed8 | ||
|   | 76f76eb19a | ||
|   | a3ff6cce97 | ||
|   | 1e7c696ea4 | ||
|   | 8d9db8d02c | ||
|   | c5bb6829d0 | ||
|   | a9f1ac2dfd | ||
|   | 27984c0d2d | ||
|   | 9a9c2acd8d | ||
|   | b68d4b3580 | ||
|   | 6f345abe91 | ||
|   | da842085ce | ||
|   | 18bdbb6870 | ||
|   | 361f5ce2b8 | ||
|   | ae9acfaed8 | ||
|   | 6770a6b1ce | ||
|   | 4ff71bd741 | ||
|   | 5c736ad63e | ||
|   | 33c63ede78 | ||
|   | ac47b6abfa | ||
|   | 7d8dca7b78 | ||
|   | c08b1a6a32 | ||
|   | 5615fa78d6 | ||
|   | f007988fba | ||
|   | 20ef3439ea | ||
|   | 0406c6085b | ||
|   | 0a132cdca5 | ||
|   | a0fe1c5a60 | ||
|   | 6b1e806c8b | ||
|   | 3cd293c515 | ||
|   | a06072b395 | ||
|   | 3863c11be5 | ||
|   | 5092595835 | ||
|   | 918d261658 | ||
|   | a0877449f3 | ||
|   | 444bdfbfc4 | ||
|   | 8e4169e29e | ||
|   | ea696b47c8 | ||
|   | 9e88d73aaa | ||
|   | 1f01157354 | ||
|   | 8f675d14e8 | ||
|   | 9afdf50667 | ||
|   | 8dc06e3259 | ||
|   | aa7e2cd1fe | ||
|   | 07e848638c | ||
|   | c8703354e3 | ||
|   | e641b43849 | ||
|   | a6db2374fe | ||
|   | 2e3715bb69 | ||
|   | 883ea31f80 | ||
|   | 39abbed7cb | ||
|   | 0730ac61e8 | ||
|   | 006fbdce83 | ||
|   | 60d6847de5 | ||
|   | ecb4d7c3f2 | ||
|   | 84ad14b2e4 | ||
|   | a1bf102591 | ||
|   | add965706a | ||
|   | 5d8b1b689b | ||
|   | 3e2018f5e9 | ||
|   | dceeef9fe5 | ||
|   | 3df0bd64cb | ||
|   | a5b4fab732 | ||
|   | de36b26d5e | ||
|   | ae7cbd910a | ||
|   | 92b274a7de | ||
|   | b3d47d5861 | ||
|   | f5ba232fb4 | 
							
								
								
									
										11
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								Makefile
									
									
									
									
									
								
							| @@ -4,7 +4,12 @@ | ||||
|  | ||||
| include Makefile.inc | ||||
|  | ||||
| SUBDIR=		conf.d doc etc init.d local.d sysctl.d man net scripts sh src | ||||
| SUBDIR=		conf.d etc init.d local.d man scripts sh src sysctl.d | ||||
|  | ||||
| # Build our old net foo or not | ||||
| ifeq (${MKNET},oldnet) | ||||
| SUBDIR+=	net doc | ||||
| endif | ||||
|  | ||||
| # Build pkgconfig or not | ||||
| MKPKGCONFIG?=	yes | ||||
| @@ -25,7 +30,9 @@ include ${MK}/dist.mk | ||||
| include ${MK}/git.mk | ||||
|  | ||||
| _installafter: | ||||
| ifneq ($(OS),Linux) | ||||
| ifeq (${MKPREFIX},yes) | ||||
| 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d | ||||
| else ifneq (${OS},Linux) | ||||
| 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d | ||||
| endif | ||||
| 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/tmp | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| NAME=		openrc | ||||
| VERSION=	0.10 | ||||
| VERSION=	0.11.3 | ||||
| PKG=		${NAME}-${VERSION} | ||||
|   | ||||
							
								
								
									
										4
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								README
									
									
									
									
									
								
							| @@ -10,7 +10,9 @@ You may wish to tweak the installation with the below arguments | ||||
| PROGLDFLAGS=-static | ||||
| LIBNAME=lib64 | ||||
| DESTDIR=/tmp/openrc-image | ||||
| MKNET=oldnet | ||||
| MKPAM=pam | ||||
| MKPREFIX=yes | ||||
| MKPKGCONFIG=no | ||||
| MKSELINUX=yes | ||||
| MKSTATICLIBS=no | ||||
| @@ -24,6 +26,8 @@ We don't support building a static OpenRC with PAM. | ||||
| You may need to use PROGLDFLAGS=-Wl,-Bstatic on glibc instead of just -static. | ||||
| If you debug memory under valgrind, add -DDEBUG_MEMORY to your CPPFLAGS | ||||
| so that all malloc memory should be freed at exit. | ||||
| If you are building OpenRC for a Gentoo Prefix installation, add | ||||
| MKPREFIX=yes. | ||||
|  | ||||
| You can also brand OpenRC if you so wish like so | ||||
| BRANDING=\"Gentoo/$(uname -s)\" | ||||
|   | ||||
							
								
								
									
										40
									
								
								README.newnet
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								README.newnet
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| The following applies only to the newnet stack, which is not presently | ||||
| maintained in OpenRC. The oldnet stack is maintained instead. | ||||
| - Robin H. Johnson <robbat2@gentoo.org>, 2011/02/21 | ||||
|  | ||||
| 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,9 +1,12 @@ | ||||
| DIR=	${CONFDIR} | ||||
| CONF=	bootmisc fsck hostname localmount network staticroute urandom \ | ||||
| 	${CONF-${OS}} | ||||
| CONF=	bootmisc fsck hostname localmount netmount urandom tmpfiles \ | ||||
| 		${CONF-${OS}} | ||||
|  | ||||
| ifeq (${MKNET},) | ||||
| CONF+= network staticroute | ||||
| TARGETS+=	network staticroute | ||||
| CLEANFILES+=	network staticroute | ||||
| endif | ||||
|  | ||||
| MK=	../mk | ||||
| include ${MK}/os.mk | ||||
|   | ||||
| @@ -1,9 +1,10 @@ | ||||
| # The consolefont service is not activated by default. If you need to | ||||
| # use it, you should run "rc-update add consolefont boot" as root. | ||||
| # | ||||
| # consolefont specifies the default font that you'd like Linux to use on the | ||||
| # console.  You can find a good selection of fonts in /usr/share/consolefonts; | ||||
| # you shouldn't specify the trailing ".psf.gz", just the font name below. | ||||
| # To use the default console font, comment out the CONSOLEFONT setting below. | ||||
| # This setting is used by the /etc/init.d/consolefont script (NOTE: if you do | ||||
| # not want to use it, run "rc-update del consolefont boot" as root). | ||||
| consolefont="default8x16" | ||||
|  | ||||
| # consoletranslation is the charset map file to use.  Leave commented to use | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| # Sets the level at which logging of messages is done to the | ||||
| # console.  See dmesg(8) for more info. | ||||
| # console.  See dmesg(1) for more info. | ||||
| dmesg_level="1" | ||||
|   | ||||
							
								
								
									
										20
									
								
								conf.d/netmount
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								conf.d/netmount
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| # Depending on how mounting your network file systems behaves when your | ||||
| # network interfaces are down, you may need to set the netmount script to | ||||
| # require  specific network interfaces to be active. This file gives | ||||
| # examples of how to do this: | ||||
| # | ||||
| # If you are using newnet and configuring the interface with a static | ||||
| # address with the network script: | ||||
| # rc_need="network" | ||||
| # | ||||
| # If you are using oldnet, you must list the specific net.* services you | ||||
| # need: | ||||
| # | ||||
| # rc_need="net.eth0" | ||||
| # rc_need="net.eth1 net.eth2" | ||||
| # | ||||
| # If you are using a dynamic network management tool like | ||||
| # networkmanager, dhcpcd, etc, you should list that tool here. | ||||
| # | ||||
| # rc_need="networkmanager" | ||||
| # rc_need="dhcpcd" | ||||
							
								
								
									
										3
									
								
								conf.d/tmpfiles
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								conf.d/tmpfiles
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| # Extra options for tmpfiles.sh | ||||
| #tmpfiles_opts="--verbose" | ||||
| tmpfiles_opts="" | ||||
| @@ -80,9 +80,9 @@ | ||||
| # Most drivers that report carrier status function correctly, but some do not | ||||
| # One of these faulty drivers is for the Intel e1000 network card, but only | ||||
| # at boot time. To get around this you may alter the carrier_timeout value for | ||||
| # the interface. -1 is disable, 0 is infinite and any other number of seconds | ||||
| # is how long we wait for carrier. The current default is 3 seconds | ||||
| #carrier_timeout_eth0=-1 | ||||
| # the interface. 0 is disable and any other number of seconds is how | ||||
| # long we wait for carrier. The current default is disabled. | ||||
| #carrier_timeout_eth0=0 | ||||
|  | ||||
| # You may wish to disable the interface being brought down when stopping. | ||||
| # This is only of use for WakeOnLan. | ||||
|   | ||||
| @@ -34,7 +34,7 @@ | ||||
| # In other words, you probably should DO NOTHING HERE... | ||||
|  | ||||
| # Prefer ifconfig over iproute2 | ||||
| #modules="ifconfig" | ||||
| #modules="!iproute2" | ||||
|  | ||||
| # You can also specify other modules for an interface | ||||
| # In this case we prefer udhcpc over dhcpcd | ||||
| @@ -57,7 +57,7 @@ | ||||
|  | ||||
| # If you don't specify an interface then we prefer iproute2 if it's installed | ||||
| # To prefer ifconfig over iproute2 | ||||
| #modules="ifconfig" | ||||
| #modules="!iproute2" | ||||
|  | ||||
| # For a static configuration, use something like this | ||||
| # (They all do exactly the same thing btw) | ||||
| @@ -126,6 +126,13 @@ | ||||
| # tables you may have to set a global metric as the due to a simple read of | ||||
| # the routing table taking over a minute at a time. | ||||
|  | ||||
| # Most drivers that report carrier status function correctly, but some do not | ||||
| # One of these faulty drivers is for the Intel e1000 network card, but only | ||||
| # at boot time. To get around this you may alter the carrier_timeout value for | ||||
| # the interface. 0 is disable and any other number of seconds is how | ||||
| # long we wait for carrier. The current default is disabled. | ||||
| #carrier_timeout_eth0=0 | ||||
|  | ||||
| # You may wish to disable the interface being brought down when stopping. | ||||
| # This is only of use for WakeOnLan. | ||||
| #ifdown_eth0="NO" | ||||
| @@ -552,26 +559,34 @@ | ||||
| # You can also configure the VLAN - see for ip man page for more details | ||||
| # To change the vlan interface name. If not set, the standard "iface.vlanid" | ||||
| # will be used. This is the replacement for the old 'vconfig set_name_type' | ||||
| # functionality. | ||||
| # functionality. If you previously relied on the DEV_PLUS_VID or | ||||
| # DEV_PLUS_VID_NO_PAD options to have different VLANs with same ID value, on | ||||
| # different interfaces, please note that you need to use both the interface and | ||||
| # vlan number in the numbering. This applies for all of the options: name, | ||||
| # txqueuelen, mac, broadcast, mtu, ingress, egress, flags | ||||
| #vlan1_name="vlan1" | ||||
| #vlan2_name="eth0.2" | ||||
| #eth0_vlan2_name="eth0.2" | ||||
| #eth1_vlan2_name="eth1.2" | ||||
|  | ||||
| # The following shows the old set_name_type setting and what new option to set: | ||||
| # Using eth9 & VLAN VID 26 as an example. | ||||
| # VLAN_PLUS_VID         vlan26_name="vlan0026" | ||||
| # VLAN_PLUS_VID_NO_PAD  vlan26_name="vlan26" | ||||
| # DEV_PLUS_VID          vlan26_name="eth9.0026" | ||||
| # DEV_PLUS_VID_NO_PAD   vlan26_name="eth9.26" | ||||
| # DEV_PLUS_VID          eth9_vlan26_name="eth9.0026" | ||||
| # DEV_PLUS_VID_NO_PAD   eth9_vlan26_name="eth9.26" | ||||
|  | ||||
| # Set the vlan flags | ||||
| #vlan1_flags="reorder_hdr off gvrp on loose_binding on" | ||||
| #eth0_vlan1_flags="reorder_hdr off gvrp on loose_binding on" | ||||
|  | ||||
| # Configure in/egress maps | ||||
| #vlan1_ingress="2:6 3:5" | ||||
| #vlan1_egress="1:2" | ||||
| #eth0_vlan1_egress="1:2" | ||||
|  | ||||
| #config_vlan1="172.16.3.1/23" | ||||
| #config_vlan2="172.16.2.1/23" | ||||
| #config_vlan1="172.16.2.1/24" | ||||
| #config_vlan2="172.16.3.1/24" | ||||
| #config_eth0_1="172.16.4.1/24" | ||||
| #config_eth1_1="172.16.5.1/24" | ||||
|  | ||||
| # NOTE: Vlans can be configured with a . in their interface names | ||||
| # When configuring vlans with this name type, you need to replace . with a _ | ||||
| @@ -638,6 +653,17 @@ | ||||
| # ppp devices - we need to depend function on the bonded interfaces | ||||
| #rc_net_bond0_need="net.eth0 net.eth1" | ||||
|  | ||||
| # Bonding subsume support (prevents crashes for root-on-NFS) | ||||
| #  - Only tested in the default bonding mode ('active-backup') with | ||||
| # IPv4 | ||||
| #  - Only subsumes basic interface characteristics (IP, netmask) and | ||||
| #    excludes additional routes, interface properties such as MTU, | ||||
| #    interface-associated netfilter rules, etc. | ||||
| # In the example below, the (usually kernel-autoconfigured) | ||||
| # 'eth0' interface is a member of bond0, which subsumes the | ||||
| # existing interface configuration without upsetting NFS. | ||||
| #slaves_bond0="eth0 eth1" | ||||
| #subsume_bond0="eth0" | ||||
|  | ||||
| #----------------------------------------------------------------------------- | ||||
| # Classical IP over ATM | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
| # This is the subsystem type. Valid options on FreeBSD: | ||||
| # ""        - nothing special | ||||
| # "jail"    - FreeBSD jails | ||||
| # "prefix"  - Prefix | ||||
| # If this is commented out, automatic detection will be used. | ||||
| # | ||||
| # This should be set to the value representing the environment this file is | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| # ""        - nothing special | ||||
| # "lxc"     - Linux Containers | ||||
| # "openvz"  - Linux OpenVZ | ||||
| # "prefix"  - Prefix | ||||
| # "uml"     - Usermode Linux | ||||
| # "vserver" - Linux vserver | ||||
| # "xen0"    - Xen0 Domain | ||||
| @@ -18,3 +19,11 @@ | ||||
| # This is the number of tty's used in most of the rc-scripts (like | ||||
| # consolefont, numlock, etc ...) | ||||
| rc_tty_number=12 | ||||
|  | ||||
| # If you have cgroups turned on in your kernel, this switch controls | ||||
| # whether or not a group for each controler is mounted under | ||||
| # /sys/fs/cgroup. | ||||
| # Support for process management by cgroups is planned in the future, | ||||
| # so if you turn this off, be aware that you may not be able to use that | ||||
| # feature. | ||||
| #rc_controller_cgroups="YES" | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
|  | ||||
| # This is the subsystem type. Valid options on NetBSD: | ||||
| # ""        - nothing special | ||||
| # "prefix"  - Prefix | ||||
| # "xen0"    - Xen0 Domain | ||||
| # "xenU"    - XenU Domain | ||||
| # If this is commented out, automatic detection will be used. | ||||
|   | ||||
| @@ -94,6 +94,10 @@ | ||||
| # These variables are documented here, but should be configured in | ||||
| # /etc/conf.d/foo for service foo and NOT enabled here unless you | ||||
| # really want them to work on a global basis. | ||||
| # If your service has characters in its name which are not legal in | ||||
| # shell variable names and you configure the variables for it in this | ||||
| # file, those characters should be replaced with underscores in the | ||||
| # variable names as shown below. | ||||
|  | ||||
| # Some daemons are started and stopped via start-stop-daemon. | ||||
| # We can set some things on a per service basis, like the nicelevel. | ||||
| @@ -116,6 +120,13 @@ | ||||
| #rc_foo_need="openvpn" | ||||
| #rc_foo_after="clock" | ||||
|  | ||||
| # Below is an example for service foo-bar. Note that the '-' is illegal | ||||
| # in a shell variable name, so we convert it to an underscore. | ||||
| # example for service foo-bar. | ||||
| #rc_foo_bar_config="/etc/foo-bar" | ||||
| #rc_foo_bar_need="openvpn" | ||||
| #rc_foo_bar_after="clock" | ||||
|  | ||||
| # You can also remove dependencies. | ||||
| # This is mainly used for saying which servies do NOT provide net. | ||||
| #rc_net_tap0_provide="!net" | ||||
|   | ||||
							
								
								
									
										1
									
								
								init.d/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								init.d/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -41,3 +41,4 @@ syslogd | ||||
| termencoding | ||||
| ttys | ||||
| wscons | ||||
| tmpfiles.setup | ||||
|   | ||||
| @@ -1,12 +1,18 @@ | ||||
| DIR=	${INITDIR} | ||||
| SRCS=	bootmisc.in fsck.in hostname.in local.in localmount.in netmount.in \ | ||||
| 	network.in root.in savecache.in staticroute.in swap.in swapfiles.in \ | ||||
| 	swclock.in sysctl.in urandom.in ${SRCS-${OS}} | ||||
| 	root.in savecache.in swap.in swapfiles.in \ | ||||
| 	tmpfiles.setup.in swclock.in sysctl.in urandom.in ${SRCS-${OS}} | ||||
| BIN=	${OBJS} | ||||
|  | ||||
| # Build our old net foo or not | ||||
| ifeq (${MKNET},) | ||||
| SRCS+= network.in staticroute.in | ||||
| endif | ||||
|  | ||||
| ifeq (${MKNET},oldnet) | ||||
| INSTALLAFTER=	_installafter_net.lo | ||||
| CLEANFILES+=	net.lo | ||||
| TARGETS+=	net.lo | ||||
| SRCS+= net.lo.in | ||||
| endif | ||||
|  | ||||
| MK=	../mk | ||||
| include ${MK}/os.mk | ||||
| @@ -16,8 +22,8 @@ NET_LO-FreeBSD=	net.lo0 | ||||
| SRCS-FreeBSD=	hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \ | ||||
| 		rpcbind.in savecore.in syslogd.in | ||||
| # These are FreeBSD specific | ||||
| SRCS-FreeBSD+=	adjkerntz.in devd.in dumpon.in ipfw.in mixer.in nscd.in \ | ||||
| 		powerd.in syscons.in | ||||
| SRCS-FreeBSD+=	adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \ | ||||
| 		mixer.in nscd.in powerd.in syscons.in | ||||
|  | ||||
| NET_LO-Linux=	net.lo | ||||
| SRCS-Linux=	devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \ | ||||
|   | ||||
| @@ -22,7 +22,7 @@ depend() | ||||
| 	   [ "$clock" != "UTC" -a ! -e /etc/wall_cmos_clock ]; then | ||||
| 		need root | ||||
| 	fi | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -7,7 +7,7 @@ depend() | ||||
| 	need localmount | ||||
| 	before logger | ||||
| 	after clock sysctl | ||||
| 	keyword -timeout | ||||
| 	keyword -prefix -timeout | ||||
| } | ||||
|  | ||||
| : ${wipe_tmp:=${WIPE_TMP:-yes}} | ||||
| @@ -112,7 +112,7 @@ start() | ||||
| 		fi | ||||
| 	done | ||||
|  | ||||
| 	if [ "$RC_UNAME" = Linux -a -d /run ] && false; then | ||||
| 	if [ "$RC_UNAME" = Linux -a -d /run ]; then | ||||
| 		migrate_to_run	/var/lock /run/lock | ||||
| 		migrate_to_run	/var/run /run | ||||
| 	fi | ||||
| @@ -196,3 +196,5 @@ stop() | ||||
|  | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| # vim: ft=sh | ||||
|   | ||||
| @@ -8,7 +8,7 @@ depend() | ||||
| { | ||||
| 	need localmount termencoding | ||||
| 	after hotplug bootmisc | ||||
| 	keyword -openvz -uml -vserver -xenu -lxc | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -10,7 +10,7 @@ depend() { | ||||
| 	need localmount | ||||
| 	after bootmisc | ||||
| 	before net.lo0 | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start_pre() { | ||||
|   | ||||
| @@ -5,8 +5,9 @@ | ||||
| description="Mount system critical filesystems in /dev." | ||||
|  | ||||
| depend() { | ||||
| 	use dev | ||||
| 	keyword -vserver | ||||
| 	use dev-mount | ||||
| 	before dev | ||||
| 	keyword -prefix -vserver | ||||
| } | ||||
|  | ||||
| start() { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ description="Set the dmesg level for a cleaner boot" | ||||
| depend() | ||||
| { | ||||
| 	before dev modules | ||||
| 	keyword -vserver | ||||
| 	keyword -lxc -prefix -vserver | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -6,7 +6,7 @@ description="Configures a specific kernel dump device." | ||||
|  | ||||
| depend() { | ||||
| 	need swap | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() { | ||||
|   | ||||
							
								
								
									
										43
									
								
								init.d/encswap.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								init.d/encswap.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| #!@PREFIX@/sbin/runscript | ||||
| # Copyright 1992-2012 FreeBSD Project | ||||
| # Released under the 2-clause BSD license | ||||
|  | ||||
| depend() { | ||||
| 	before swap | ||||
| } | ||||
|  | ||||
| start() { | ||||
| 	while read device mountpoint type options rest ; do | ||||
| 		case ":${device}:${type}:${options}" in | ||||
| 		:#*) | ||||
| 			;; | ||||
| 		*.bde:swap:sw) | ||||
| 			passphrase=$(dd if=/dev/random count=1 2>/dev/null | md5 -q) | ||||
| 			device="${device%.bde}" | ||||
| 			gbde init "${device}" -P "${passphrase}" || return 1 | ||||
| 			gbde attach "${device}" -p "${passphrase}" || return 1 | ||||
| 			;; | ||||
| 		*.eli:swap:sw) | ||||
| 			device="${device%.eli}" | ||||
| 			geli onetime ${geli_swap_flags} "${device}" || return 1 | ||||
| 			;; | ||||
| 		esac | ||||
| 	done < /etc/fstab | ||||
| } | ||||
|  | ||||
| stop() { | ||||
| 	while read device mountpoint type options rest ; do | ||||
| 		case ":${device}:${type}:${options}" in | ||||
| 		:#*) | ||||
| 			;; | ||||
| 		*.bde:swap:sw) | ||||
| 			device="${device%.bde}" | ||||
| 			gbde detach "${device}" | ||||
| 			;; | ||||
| 		*.eli:swap:sw) | ||||
| 			# Nothing here, because geli swap devices should be | ||||
| 			# created with the auto-detach-on-last-close option. | ||||
| 			;; | ||||
| 		esac | ||||
| 	done < /etc/fstab | ||||
| } | ||||
| @@ -9,7 +9,7 @@ _IFS=" | ||||
| depend() | ||||
| { | ||||
| 	use dev clock modules | ||||
| 	keyword -jail -openvz -timeout -vserver -lxc | ||||
| 	keyword -jail -openvz -prefix -timeout -vserver -lxc | ||||
| } | ||||
|  | ||||
| _abort() { | ||||
|   | ||||
| @@ -9,7 +9,7 @@ depend() | ||||
| { | ||||
| 	use root | ||||
| 	before devd net | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| _set() | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| description="Sets the hostname of the machine." | ||||
|  | ||||
| depend() { | ||||
| 	keyword -lxc | ||||
| 	keyword -prefix -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -28,7 +28,7 @@ depend() | ||||
| 	else | ||||
| 		before * | ||||
| 	fi | ||||
| 	keyword -openvz -uml -vserver -xenu -lxc | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
| setupopts() | ||||
|   | ||||
| @@ -8,7 +8,7 @@ depend() | ||||
| { | ||||
| 	need localmount termencoding | ||||
| 	after bootmisc | ||||
| 	keyword -openvz -uml -vserver -xenu -lxc | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -4,6 +4,11 @@ | ||||
|  | ||||
| description="Kill all processes so we can unmount disks cleanly." | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	ebegin "Terminating remaining processes" | ||||
|   | ||||
| @@ -9,7 +9,7 @@ depend() | ||||
| 	need fsck | ||||
| 	use lvm modules mtab | ||||
| 	after lvm modules | ||||
| 	keyword -jail -openvz -vserver -lxc | ||||
| 	keyword -jail -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -7,7 +7,7 @@ extra_commands="restore" | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| restore() | ||||
|   | ||||
| @@ -7,7 +7,7 @@ description="Loads a user defined list of kernel modules." | ||||
| depend() | ||||
| { | ||||
| 	use isapnp | ||||
| 	keyword -openvz -vserver -lxc | ||||
| 	keyword -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -7,11 +7,13 @@ description="Re-mount filesytems read-only for a clean reboot." | ||||
| depend() | ||||
| { | ||||
| 	need killprocs savecache | ||||
| 	keyword -openvz -vserver -lxc | ||||
| 	keyword -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	local ret=0 | ||||
|  | ||||
| 	# Flush all pending disk writes now | ||||
| 	sync; sync | ||||
|  | ||||
| @@ -39,6 +41,9 @@ start() | ||||
| 	do_unmount "umount -r" \ | ||||
| 		--skip-point-regex "$m" \ | ||||
| 		"${fs:+--skip-fstype-regex}" $fs --nonetdev | ||||
| 	ret=$? | ||||
|  | ||||
| 	eoutdent | ||||
| 	eend $? | ||||
|  | ||||
| 	eend $ret | ||||
| } | ||||
|   | ||||
| @@ -16,7 +16,7 @@ depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	after bootmisc | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -7,6 +7,7 @@ description="Update /etc/mtab to match what the kernel knows about" | ||||
| depend() | ||||
| { | ||||
| 	need root | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -19,14 +19,14 @@ depend() | ||||
| 	local IFVAR=$(shell_var "${IFACE}") | ||||
|  | ||||
| 	need localmount | ||||
| 	if [ "$RC_UNAME" = Linux ]; then | ||||
| 	if [ "$RC_UNAME" = Linux -a "$IFACE" != lo ]; then | ||||
| 		need sysfs | ||||
| 	fi | ||||
| 	after bootmisc | ||||
| 	keyword -jail -vserver | ||||
| 	keyword -jail -prefix -vserver | ||||
|  | ||||
| 	case "${IFACE}" in | ||||
| 		lo|lo0) provide lo;; | ||||
| 		lo|lo0) ;; | ||||
| 		*) | ||||
| 			after net.lo net.lo0 dbus | ||||
| 			provide net | ||||
| @@ -108,7 +108,7 @@ _wait_for_carrier() | ||||
| 	_has_carrier  && return 0 | ||||
|  | ||||
| 	eval timeout=\$carrier_timeout_${IFVAR} | ||||
| 	timeout=${timeout:-${carrier_timeout:-5}} | ||||
| 	timeout=${timeout:-${carrier_timeout:-0}} | ||||
|  | ||||
| 	# Incase users don't want this nice feature ... | ||||
| 	[ ${timeout} -le 0 ] && return 0 | ||||
|   | ||||
| @@ -2,62 +2,26 @@ | ||||
| # Copyright (c) 2007-2009 Roy Marples <roy@marples.name> | ||||
| # Released under the 2-clause BSD license. | ||||
|  | ||||
| description="Mounts network shares according to /etc/fstab." | ||||
|  | ||||
| need_portmap() | ||||
| { | ||||
| 	local opts= | ||||
| 	local IFS=" | ||||
| " | ||||
| 	set -- $(fstabinfo --options --fstype nfs,nfs4) | ||||
| 	for opts; do | ||||
| 		case ,$opts, in | ||||
| 			*,noauto,*|*,nolock,*);; | ||||
| 			*) return 0;; | ||||
| 		esac | ||||
| 	done | ||||
| 	return 1 | ||||
| } | ||||
| description="Mounts network shares, other than NFS, according to /etc/fstab." | ||||
| # We skip all NFS shares in this script because they require extra | ||||
| # daemons to be running on the client in order to work correctly. | ||||
| # It is best to allow nfs-utils to handle all nfs shares. | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	# Only have portmap as a dependency if there is a nfs mount in fstab | ||||
| 	# that is set to mount at boot | ||||
| 	local pmap= | ||||
| 	if need_portmap; then | ||||
| 		pmap="rpc.statd" | ||||
| 		[ -x @SYSCONFDIR@/init.d/rpcbind ] \ | ||||
| 			&& pmap="$pmap rpcbind" \ | ||||
| 			|| pmap="$pmap portmap" | ||||
| 	fi | ||||
|  | ||||
| 	config /etc/fstab | ||||
| 	need net $pmap | ||||
| 	use afc-client amd autofs openvpn | ||||
| 	use dns nfs nfsmount portmap rpcbind rpc.statd rpc.lockd | ||||
| 	keyword -jail -vserver | ||||
| 	use dns | ||||
| 	keyword -jail -prefix -vserver | ||||
| } | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	local myneed= myuse= pmap="portmap" nfsmounts= | ||||
| 	[ -x @SYSCONFDIR@/init.d/rpcbind ] && pmap="rpcbind" | ||||
|  | ||||
| 	local x= fs= rc= | ||||
| 	for x in $net_fs_list $extra_net_fs_list; do | ||||
| 		case "$x" in | ||||
| 			nfs|nfs4) | ||||
| 			# If the nfsmount script took care of the nfs | ||||
| 			# filesystems, then there's no point in trying | ||||
| 			# them twice | ||||
| 			service_started nfsmount && continue | ||||
|  | ||||
| 			# Only try to mount NFS filesystems if portmap was | ||||
| 			# started. This is to fix "hang" problems for new | ||||
| 			# users who do not add portmap to the default runlevel. | ||||
| 			if need_portmap && ! service_started "$pmap"; then | ||||
| 				continue | ||||
| 			fi | ||||
| 			continue | ||||
| 			;; | ||||
| 		esac | ||||
| 		fs="$fs${fs:+,}$x" | ||||
| @@ -82,7 +46,14 @@ stop() | ||||
| 	. "$RC_LIBEXECDIR"/sh/rc-mount.sh | ||||
|  | ||||
| 	for x in $net_fs_list $extra_net_fs_list; do | ||||
| 		fs="$fs${fs:+,}$x" | ||||
| 		case "$x" in | ||||
| 			nfs|nfs4) | ||||
| 				continue | ||||
| 				;; | ||||
| 			*) | ||||
| 				fs="$fs${fs:+,}$x" | ||||
| 				;; | ||||
| 		esac | ||||
| 	done | ||||
| 	if [ -n "$fs" ]; then | ||||
| 		umount -at $fs || eerror "Failed to simply unmount filesystems" | ||||
| @@ -91,7 +62,14 @@ stop() | ||||
| 	eindent | ||||
| 	fs= | ||||
| 	for x in $net_fs_list $extra_net_fs_list; do | ||||
| 		fs="$fs${fs:+|}$x" | ||||
| 		case "$x" in | ||||
| 			nfs|nfs4) | ||||
| 				continue | ||||
| 				;; | ||||
| 			*) | ||||
| 				fs="$fs${fs:+|}$x" | ||||
| 				;; | ||||
| 		esac | ||||
| 	done | ||||
| 	[ -n "$fs" ] && fs="^($fs)$" | ||||
| 	do_unmount umount ${fs:+--fstype-regex} $fs --netdev | ||||
|   | ||||
| @@ -12,8 +12,10 @@ depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	after bootmisc | ||||
| 	provide net | ||||
| 	keyword -jail -vserver | ||||
| 	if [ -n "$(interfaces)" ]; then | ||||
| 		provide net | ||||
| 	fi | ||||
| 	keyword -jail -prefix -vserver | ||||
| } | ||||
|  | ||||
| uniqify() | ||||
| @@ -219,12 +221,6 @@ start() | ||||
| 		eend $? | ||||
| 	fi | ||||
|  | ||||
| 	ewarn | ||||
| 	ewarn "The $RC_SVCNAME script is deprecated and will be" | ||||
| 	ewarn "removed in the future." | ||||
| 	ewarn "Please use the net.* scripts to manage your network interfaces." | ||||
| 	ewarn | ||||
|  | ||||
| 	einfo "Starting network" | ||||
| 	routeflush | ||||
| 	if [ "$RC_UNAME" = "Linux" ]; then | ||||
|   | ||||
| @@ -7,6 +7,7 @@ required_files="/etc/newsyslog.conf" | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	keyword -openvz -vserver -lxc | ||||
| 	keyword -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| _setleds() | ||||
|   | ||||
| @@ -11,7 +11,7 @@ extra_started_commands="reload" | ||||
|  | ||||
| depend() { | ||||
| 	need localmount | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -12,7 +12,7 @@ depend() | ||||
| 	need localmount | ||||
| 	use logger | ||||
| 	after bootmisc | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start_pre() | ||||
|   | ||||
| @@ -8,7 +8,7 @@ depend() | ||||
| { | ||||
| 	use modules devfs | ||||
| 	need localmount | ||||
| 	keyword -openvz -vserver -lxc | ||||
| 	keyword -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -7,6 +7,7 @@ depend() | ||||
| 	need localmount net | ||||
| 	after * | ||||
| 	before local | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -7,7 +7,7 @@ description="Mount the root fs read/write" | ||||
| depend() | ||||
| { | ||||
| 	need fsck | ||||
| 	keyword -jail -openvz -vserver -lxc | ||||
| 	keyword -jail -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -13,6 +13,14 @@ start() | ||||
| 			return 1 | ||||
| 		fi | ||||
| 	fi | ||||
| 	if ! checkpath -W "$RC_LIBEXECDIR"; then | ||||
| 		ewarn "WARNING: ${RC_LIBEXECDIR} is not writable!" | ||||
| 		if ! yesno "${RC_GOINGDOWN}"; then | ||||
| 			ewarn "Unable to save deptree cache" | ||||
| 			return 1 | ||||
| 		fi | ||||
| 		return 0 | ||||
| 	fi | ||||
| 	ebegin "Saving dependency cache" | ||||
| 	local rc= | ||||
| 	if [ ! -d "$RC_LIBEXECDIR"/cache ]; then | ||||
|   | ||||
| @@ -6,8 +6,9 @@ description="Saves a kernel dump." | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	keyword -jail | ||||
| 	need dumpon localmount | ||||
| 	before encswap | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -12,7 +12,7 @@ depend() | ||||
| { | ||||
| 	provide net | ||||
| 	use network | ||||
| 	keyword -jail -vserver | ||||
| 	keyword -jail -prefix -vserver | ||||
| } | ||||
|  | ||||
| pre_flight_checks() | ||||
| @@ -93,11 +93,6 @@ do_routes() | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	ewarn | ||||
| 	ewarn "The $RC_SVCNAME script is deprecated and will be" | ||||
| 	ewarn "removed in the future." | ||||
| 	ewarn "Please use the net.* scripts to manage your network interfaces." | ||||
| 	ewarn | ||||
| 	do_routes "Adding" "add" | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| depend() | ||||
| { | ||||
| 	before fsck | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| depend() | ||||
| { | ||||
| 	before localmount | ||||
| 	keyword -jail -openvz -vserver -lxc | ||||
| 	keyword -jail -openvz -prefix -vserver -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -31,14 +31,16 @@ stop() | ||||
|  | ||||
| 	case "$RC_UNAME" in | ||||
| 		Linux) | ||||
| 			while read filename type rest; do | ||||
| 				case "$type" in | ||||
| 					file) swapoff $filename >/dev/null;; | ||||
| 				esac | ||||
| 				case "$filename" in | ||||
| 					/dev/loop*) swapoff $filename >/dev/null;; | ||||
| 				esac | ||||
| 			done < /proc/swaps | ||||
| 			if [ -e /proc/swaps ]; then | ||||
| 				while read filename type rest; do | ||||
| 					case "$type" in | ||||
| 						file) swapoff $filename >/dev/null;; | ||||
| 					esac | ||||
| 					case "$filename" in | ||||
| 						/dev/loop*) swapoff $filename >/dev/null;; | ||||
| 					esac | ||||
| 				done < /proc/swaps | ||||
| 			fi | ||||
| 			;; | ||||
| 	esac | ||||
| 	eend 0 | ||||
|   | ||||
| @@ -8,7 +8,7 @@ depend() | ||||
| { | ||||
| 	before * | ||||
| 	provide clock | ||||
| 	keyword -openvz -uml -vserver -xenu -lxc | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
| # swclock is an OpenRC built in | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|  | ||||
| depend() { | ||||
| 	need localmount | ||||
| 	keyword -jail | ||||
| 	keyword -jail -prefix | ||||
| } | ||||
|  | ||||
| start() { | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| depend() | ||||
| { | ||||
| 	before bootmisc logger | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -5,7 +5,7 @@ | ||||
| depend() | ||||
| { | ||||
| 	before bootmisc logger | ||||
| 	keyword -lxc -vserver | ||||
| 	keyword -lxc -prefix -vserver | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -6,7 +6,7 @@ description="Mount the sys filesystem." | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	keyword -vserver | ||||
| 	keyword -lxc -prefix -vserver | ||||
| } | ||||
|  | ||||
| mount_sys() | ||||
| @@ -74,7 +74,6 @@ mount_misc() | ||||
|  | ||||
| mount_cgroups() | ||||
| { | ||||
| 	yesno ${rc_cgroups:-YES} && [ -e /proc/cgroups ] && \ | ||||
| 		mountinfo -q /sys/fs/cgroup || return 0 | ||||
|  | ||||
| 	local agent="@LIBEXECDIR@/sh/cgroup-release-agent.sh" | ||||
| @@ -83,6 +82,8 @@ mount_cgroups() | ||||
| 		-o none,nodev,noexec,nosuid,name=openrc,release_agent="$agent" \ | ||||
| 		openrc /sys/fs/cgroup/openrc | ||||
| 	echo 1 > /sys/fs/cgroup/openrc/notify_on_release | ||||
|  | ||||
| 	yesno ${rc_controller_cgroups:-YES} && [ -e /proc/cgroups ] || return 0 | ||||
| 	while read name hier groups enabled rest; do | ||||
| 		case "${enabled}" in | ||||
| 			1)	mkdir /sys/fs/cgroup/${name} | ||||
|   | ||||
| @@ -16,4 +16,5 @@ depend() | ||||
| 	use net newsyslog | ||||
| 	need localmount | ||||
| 	after bootmisc | ||||
| 	keyword -prefix | ||||
| } | ||||
|   | ||||
| @@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	keyword -openvz -uml -vserver -xenu | ||||
| 	keyword -lxc -openvz -prefix -uml -vserver -xenu | ||||
| 	use root | ||||
| 	after bootmisc | ||||
| } | ||||
|   | ||||
							
								
								
									
										18
									
								
								init.d/tmpfiles.setup.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								init.d/tmpfiles.setup.in
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| #!@PREFIX@/sbin/runscript | ||||
| # Copyright 1999-2012 Gentoo Foundation | ||||
| # Released under the 2-clause BSD license. | ||||
|  | ||||
| description="set up tmpfiles.d entries" | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| } | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	ebegin "setting up tmpfiles.d entries" | ||||
| 	@LIBEXECDIR@/sh/tmpfiles.sh --create --remove ${tmpfiles_opts} | ||||
| 	eend $? | ||||
| 	return 0 | ||||
| } | ||||
| @@ -5,6 +5,7 @@ | ||||
| depend() | ||||
| { | ||||
| 	after fsck | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -8,7 +8,7 @@ description="Initializes the random number generator." | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	keyword -jail -openvz | ||||
| 	keyword -jail -lxc -openvz -prefix | ||||
| } | ||||
|  | ||||
| save_seed() | ||||
|   | ||||
| @@ -5,6 +5,7 @@ | ||||
| depend() | ||||
| { | ||||
| 	need localmount | ||||
| 	keyword -prefix | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -46,7 +46,7 @@ Show all runlevels and their services. | ||||
| List all services that have crashed. | ||||
| .It Fl l , -list | ||||
| List all defined runlevels. | ||||
| .It fl r , -runlevel | ||||
| .It Fl r , -runlevel | ||||
| Print the current runlevel name. | ||||
| .It Fl s , -servicelist | ||||
| Show all services. | ||||
|   | ||||
| @@ -37,7 +37,7 @@ | ||||
| .Op Ar command ... | ||||
| .Sh DESCRIPTION | ||||
| .Nm | ||||
| is basically an interpreter for shell scripts which provide an easy interface | ||||
| is basically an interpreter for shell scripts which provides an easy interface | ||||
| to the often complex system commands and daemons. | ||||
| When a service runs a command it first loads its multiplexed configuration | ||||
| file, then its master configuration file, then | ||||
| @@ -156,7 +156,7 @@ We provide this virtual service. For example, named provides dns. | ||||
| .It Ic config | ||||
| We should recalculate our dependencies if the listed files have changed. | ||||
| .It Ic keyword | ||||
| Tags a service with a keyword. Here's the keywords we currently understand:- | ||||
| Tags a service with a keyword. These are the keywords we currently understand: | ||||
| .Bl -tag -width indent | ||||
| .It Dv -shutdown | ||||
| Don't stop this service when shutting the system down. | ||||
| @@ -180,6 +180,8 @@ in | ||||
| Same as -jail, but for Linux Resource Containers (LXC). | ||||
| .It Dv -openvz | ||||
| Same as -jail, but for OpenVZ systems. | ||||
| .It Dv -prefix | ||||
| Same as -jail, but for Prefix systems. | ||||
| .It Dv -uml | ||||
| Same as -jail, but for UML systems. | ||||
| .It Dv -vserver | ||||
| @@ -350,8 +352,14 @@ Default runlevel chosen. Default is default. | ||||
| .It Va RC_SYS | ||||
| A special variable to describe the system more. | ||||
| Possible values are OPENVZ, XENU, XEN0, UML and VSERVER. | ||||
| .It Va RC_PREFIX | ||||
| In a Gentoo Prefix installation, this variable contains the prefix | ||||
| offset. Otherwise it is undefined. | ||||
| .It Va RC_UNAME | ||||
| The result of `uname -s`. | ||||
| .It Va RC_CMD | ||||
| This contains the name of the command the service script is executing, such | ||||
| as start, stop, restart etc. | ||||
| .El | ||||
| .Sh FILES | ||||
| .Pp | ||||
| @@ -388,8 +396,9 @@ rc_provide_tap1="!net" | ||||
| # To put in in /etc/rc.conf you would do it like this | ||||
| rc_net_tap1_provide="!net" | ||||
|  | ||||
| # It's also possible to negate keywords. | ||||
| rc_keyword="-keyword" | ||||
| # It's also possible to negate keywords. This is mainly useful for prefix | ||||
| # users testing OpenRC. | ||||
| rc_keyword="!-prefix" | ||||
| .Ed | ||||
| .Sh EXAMPLES | ||||
| .Pp | ||||
| @@ -438,8 +447,22 @@ depend() | ||||
|     need ${_need} | ||||
| } | ||||
|  | ||||
| # This function does any pre-start setup. If it fails, the service will | ||||
| # not be started. | ||||
| # If you need this function to behave differently for a restart command, | ||||
| # you should check the value of RC_CMD for "restart". | ||||
| # This also applies to start_post, stop_pre and stop_post. | ||||
| start_pre() | ||||
| { | ||||
| 	if [ "$RC_CMD" = restart ]; then | ||||
| 		# This block will only execute for a restart command. Use a | ||||
| 		# structure like this if you need special processing for a | ||||
| 		# restart which you do not need for a normal start. | ||||
| 		# The function can also fail from here, which will mean that a | ||||
| 		# restart can fail. | ||||
| 		# This logic can also be used in start_post, stop_pre and | ||||
| 		# stop_post. | ||||
| 	fi | ||||
|     # Ensure that our dirs are correct | ||||
|     checkpath --dir --owner foo:foo --mode 0664 \\ | ||||
| 	/var/run/foo /var/cache/foo | ||||
|   | ||||
							
								
								
									
										6
									
								
								mk/os-prefix.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								mk/os-prefix.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| # Copyright (c) 2012 William Hubbs <w.d.hubbs@gmail.com> | ||||
| # Released under the 2-clause BSD license. | ||||
|  | ||||
| ifeq (${MKPREFIX},yes) | ||||
| CPPFLAGS+=	-DPREFIX | ||||
| endif | ||||
							
								
								
									
										1
									
								
								mk/os.mk
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								mk/os.mk
									
									
									
									
									
								
							| @@ -7,5 +7,6 @@ _OS_SH=		uname -s | ||||
| _OS:= 		$(shell ${_OS_SH}) | ||||
| OS?= 		${_OS} | ||||
| include ${MK}/os-${OS}.mk | ||||
| include ${MK}/os-prefix.mk | ||||
|  | ||||
| RC_LIB=		/$(LIBNAME)/rc | ||||
|   | ||||
							
								
								
									
										11
									
								
								mk/sys.mk
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								mk/sys.mk
									
									
									
									
									
								
							| @@ -11,9 +11,14 @@ SED?=			sed | ||||
| SH=			/bin/sh | ||||
|  | ||||
| PREFIX?= | ||||
| _UPREFIX_SH=		case "${PREFIX}" in "") echo /usr;; *) echo "${PREFIX}";; esac | ||||
| _UPREFIX:=		$(shell ${_UPREFIX_SH}) | ||||
| UPREFIX=		${_UPREFIX} | ||||
| ifeq (${PREFIX},) | ||||
| UPREFIX= /usr | ||||
| else | ||||
| UPREFIX= ${PREFIX} | ||||
| ifeq (${MKPREFIX},yes) | ||||
| UPREFIX= ${PREFIX}/usr | ||||
| endif | ||||
| endif | ||||
| LOCAL_PREFIX=		/usr/local | ||||
|  | ||||
| PICFLAG?=		-fPIC | ||||
|   | ||||
| @@ -4,6 +4,12 @@ | ||||
| bonding_depend() | ||||
| { | ||||
| 	before interface macchanger | ||||
| 	program /sbin/ifconfig /bin/ifconfig | ||||
| 	# If you do not have sysfs, you MUST have this binary instead for ioctl | ||||
| 	# Also you will loose some functionality that cannot be done via sysfs: | ||||
| 	if [ ! -d /sys/class/net ]; then | ||||
| 		program /sbin/ifenslave | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| _config_vars="$_config_vars slaves" | ||||
| @@ -23,6 +29,9 @@ bonding_pre_start() | ||||
| 	eval primary="\$primary_${IFVAR}" | ||||
| 	unset primary_${IFVAR} | ||||
|  | ||||
| 	eval subsume="\$subsume_${IFVAR}" | ||||
| 	unset subsume_${IFVAR} | ||||
|  | ||||
|  | ||||
| 	[ -z "${slaves}" ] && return 0 | ||||
|  | ||||
| @@ -34,6 +43,10 @@ bonding_pre_start() | ||||
| 		fi | ||||
| 	fi | ||||
|  | ||||
| 	if [ ! -d /sys/class/net ]; then | ||||
| 		ewarn "sysfs is not available! You will be unable to create new bonds, or change dynamic parameters!" | ||||
| 	fi | ||||
|  | ||||
| 	# We can create the interface name we like now, but this | ||||
| 	# requires sysfs | ||||
| 	if ! _exists && [ -d /sys/class/net ]; then | ||||
| @@ -51,7 +64,18 @@ bonding_pre_start() | ||||
|  | ||||
| 	# 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 | ||||
| 	[ -d /sys/class/net ] && 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 | ||||
| 	# Configure link monitoring | ||||
| 	for x in /sys/class/net/"${IFACE}"/bonding/miimon; do | ||||
| 		[ -f "${x}" ] || continue | ||||
| 		n=${x##*/} | ||||
| 		eval s=\$${n}_${IFVAR} | ||||
| @@ -62,11 +86,11 @@ bonding_pre_start() | ||||
| 		fi | ||||
| 	done | ||||
| 	# Nice and dynamic for remaining options:) | ||||
| 	for x in /sys/class/net/"${IFACE}"/bonding/*; do | ||||
| 	[ -d /sys/class/net ] && for x in /sys/class/net/"${IFACE}"/bonding/*; do | ||||
| 		[ -f "${x}" ] || continue | ||||
| 		n=${x##*/} | ||||
| 		eval s=\$${n}_${IFVAR} | ||||
| 		[ "${n}" != "mode" ] || continue | ||||
| 		[ "${n}" != "mode" -o "${n}" != "miimon" ] || continue | ||||
| 		if [ -n "${s}" ]; then | ||||
| 			einfo "Setting ${n}: ${s}" | ||||
| 			echo "${s}" >"${x}" || \ | ||||
| @@ -84,15 +108,44 @@ bonding_pre_start() | ||||
| 		_exists true || return 1 | ||||
| 	done | ||||
|  | ||||
| 	# Must force the slaves to a particular state before adding them | ||||
| 	for IFACE in ${slaves}; do | ||||
| 		_delete_addresses | ||||
| 		_down | ||||
| 	done | ||||
| 	# Unless we are subsuming an existing interface (NFS root), we down | ||||
| 	# slave interfaces to work around bugs supposedly in some chipsets | ||||
| 	# that cause failure to enslave from other states. | ||||
| 	if [ -z "${subsume}" ]; then | ||||
| 		for IFACE in ${slaves}; do | ||||
| 			_delete_addresses | ||||
| 			_down | ||||
| 		done | ||||
| 	fi | ||||
| 	) | ||||
|  | ||||
| 	# now force the master to up | ||||
| 	_up | ||||
| 	# Now force the master to up | ||||
| 	#  - First test for interface subsume request (required for NFS root) | ||||
| 	if [ -n "${subsume}" ]; then | ||||
| 		einfo "Subsuming ${subsume} interface characteristics." | ||||
| 		eindent | ||||
| 		local oiface=${IFACE} | ||||
| 		IFACE=${subsume} | ||||
| 		local addr="$(_get_inet_address)" | ||||
| 		einfo "address: ${addr}" | ||||
| 		IFACE=${oiface} | ||||
| 		unset oiface | ||||
| 		eoutdent | ||||
| 		# subsume (presumably kernel auto-)configured IP | ||||
| 		ifconfig ${IFACE} ${addr} up | ||||
| 	else | ||||
| 		# warn if root on nfs and no subsume interface supplied | ||||
| 		local root_fs_type=$(mountinfo -s /) | ||||
| 		if [ "${root_fs_type}" == "nfs" ]; then | ||||
| 			warn_nfs=1 | ||||
| 			ewarn "NFS root detected!!!" | ||||
| 			ewarn " If your system crashes here, /etc/conf.d/net needs" | ||||
| 			ewarn " subsume_${IFACE}=\"<iface>\" ... where <iface> is the" | ||||
| 			ewarn " existing, (usually kernel auto-)configured interface." | ||||
| 		fi | ||||
| 		# up the interface | ||||
| 		_up | ||||
|     fi | ||||
|  | ||||
| 	# finally add in slaves | ||||
| 	# things needed in the process, and if they are done by ifenslave, openrc, and/or the kernel. | ||||
| @@ -121,7 +174,7 @@ bonding_pre_start() | ||||
| 			fi | ||||
| 		done | ||||
| 	else | ||||
| 		/sbin/ifenslave "${IFACE}" ${slaves} >/dev/null | ||||
| 		ifenslave "${IFACE}" ${slaves} >/dev/null | ||||
| 	fi | ||||
| 	eend $? | ||||
|  | ||||
| @@ -132,6 +185,11 @@ bonding_stop() | ||||
| { | ||||
| 	_is_bond || return 0 | ||||
|  | ||||
| 	# Wipe subsumed interface | ||||
| 	if [ -n "${subsume}" ]; then | ||||
| 		ifconfig ${subsume} 0.0.0.0 | ||||
| 	fi | ||||
|  | ||||
| 	local slaves= s= | ||||
| 	slaves=$( \ | ||||
| 		sed -n -e 's/^Slave Interface: //p' "/proc/net/bonding/${IFACE}" \ | ||||
| @@ -149,7 +207,7 @@ bonding_stop() | ||||
| 			echo -"${s}" > /sys/class/net/"${IFACE}"/bonding/slaves | ||||
| 		done | ||||
| 	else | ||||
| 		/sbin/ifenslave -d "${IFACE}" ${slaves} | ||||
| 		ifenslave -d "${IFACE}" ${slaves} | ||||
| 	fi | ||||
|  | ||||
| 	# reset all slaves | ||||
|   | ||||
| @@ -119,10 +119,8 @@ bridge_pre_start() | ||||
| 				return 1 | ||||
| 			fi | ||||
| 			# The interface is known to exist now | ||||
| 			_set_flag promisc | ||||
| 			_up | ||||
| 			if ! brctl addif "${BR_IFACE}" "${x}"; then | ||||
| 				_set_flag -promisc | ||||
| 				eend 1 | ||||
| 				return 1 | ||||
| 			fi | ||||
| @@ -144,6 +142,7 @@ bridge_pre_start() | ||||
| 	) || return 1 | ||||
|  | ||||
| 	# Bring up the bridge | ||||
| 	_set_flag promisc | ||||
| 	_up | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -10,12 +10,12 @@ iproute2_depend() | ||||
|  | ||||
| _up() | ||||
| { | ||||
| 	ip link set "${IFACE}" up | ||||
| 	ip link set dev "${IFACE}" up | ||||
| } | ||||
|  | ||||
| _down() | ||||
| { | ||||
| 	ip link set "${IFACE}" down | ||||
| 	ip link set dev "${IFACE}" down | ||||
| } | ||||
|  | ||||
| _exists() | ||||
| @@ -57,7 +57,7 @@ _set_flag() | ||||
| 		flag=${flag#-} | ||||
| 		opt="off" | ||||
| 	fi | ||||
| 	ip link set "${IFACE}" "${flag}" "${opt}" | ||||
| 	ip link set dev "${IFACE}" "${flag}" "${opt}" | ||||
| } | ||||
|  | ||||
| _get_mac_address() | ||||
| @@ -79,7 +79,7 @@ _get_mac_address() | ||||
|  | ||||
| _set_mac_address() | ||||
| { | ||||
| 	ip link set "${IFACE}" address "$1" | ||||
| 	ip link set dev "${IFACE}" address "$1" | ||||
| } | ||||
|  | ||||
| _get_inet_addresses() | ||||
| @@ -212,7 +212,7 @@ _delete_addresses() | ||||
|  | ||||
| _has_carrier() | ||||
| { | ||||
| 	return 0 | ||||
| 	LC_ALL=C ip link show dev "${IFACE}" | grep -q "LOWER_UP" | ||||
| } | ||||
|  | ||||
| _tunnel() | ||||
| @@ -274,12 +274,12 @@ iproute2_pre_start() | ||||
| 	# MTU support | ||||
| 	local mtu= | ||||
| 	eval mtu=\$mtu_${IFVAR} | ||||
| 	[ -n "${mtu}" ] && ip link set "${IFACE}" mtu "${mtu}" | ||||
| 	[ -n "${mtu}" ] && ip link set dev "${IFACE}" mtu "${mtu}" | ||||
|  | ||||
| 	# TX Queue Length support | ||||
| 	local len= | ||||
| 	eval len=\$txqueuelen_${IFVAR} | ||||
| 	[ -n "${len}" ] && ip link set "${IFACE}" txqueuelen "${len}" | ||||
| 	[ -n "${len}" ] && ip link set dev "${IFACE}" txqueuelen "${len}" | ||||
|  | ||||
| 	return 0 | ||||
| } | ||||
| @@ -287,7 +287,7 @@ iproute2_pre_start() | ||||
| _iproute2_ipv6_tentative() | ||||
| { | ||||
| 	# Only check tentative when we have a carrier. | ||||
| 	LC_ALL=C ip link show dev "${IFACE}" | grep -q "NO-CARRIER" && return 1 | ||||
| 	_has_carrier || return 1 | ||||
| 	LC_ALL=C ip addr show dev "${IFACE}" | \ | ||||
| 		grep -q "^[[:space:]]*inet6 .* tentative" | ||||
| } | ||||
|   | ||||
| @@ -61,12 +61,12 @@ udhcpc_start() | ||||
| 	esac | ||||
|  | ||||
| 	case " ${args} " in | ||||
| 		*" --hosname="*|*" -h "*|*" -H "*);; | ||||
| 		*" --hostname="*|*" -h "*|*" -H "*);; | ||||
| 		*) | ||||
| 			if ${sendhost}; then | ||||
| 				local hname="$(hostname)" | ||||
| 				if [ "${hname}" != "(none)" ] && [ "${hname}" != "localhost" ]; then | ||||
| 					args="${args} --hostname='${hname}'" | ||||
| 					args="${args} -x hostname:'${hname}'" | ||||
| 				fi | ||||
| 			fi | ||||
| 			;; | ||||
|   | ||||
							
								
								
									
										31
									
								
								net/vlan.sh
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								net/vlan.sh
									
									
									
									
									
								
							| @@ -66,26 +66,41 @@ vlan_post_start() | ||||
| 		einfo "Adding VLAN ${vlan} to ${IFACE}" | ||||
| 		# We need to gather all interface configuration options | ||||
| 		# 1) naming. Default to the standard "${IFACE}.${vlan}" but it can be anything | ||||
| 		eval vname=\$vlan${vlan}_name | ||||
| 		eval vname=\$${IFACE}_vlan${vlan}_name | ||||
| 		[ -z "${vname}" ] && eval vname=\$vlan${vlan}_name | ||||
| 		[ -z "${vname}" ] && vname="${IFACE}.${vlan}" | ||||
| 		# 2) flags | ||||
| 		eval vflags=\$vlan${vlan}_flags | ||||
| 		eval vflags=\$${IFACE}_vlan${vlan}_flags | ||||
| 		[ -z "${vname}" ] && eval vflags=\$vlan${vlan}_flags | ||||
| 		# 3) ingress/egress map | ||||
| 		eval vingress=\$vlan${vlan}_ingress | ||||
| 		eval vingress=\$${IFACE}_vlan${vlan}_ingress | ||||
| 		[ -z "${vingress}" ] && eval vingress=\$vlan${vlan}_ingress | ||||
| 		[ -z "${vingress}" ] || vingress="ingress-qos-map ${vingress}" | ||||
| 		eval vegress=\$vlan${vlan}_egress | ||||
| 		eval vegress=\$${IFACE}_vlan${vlan}_egress | ||||
| 		[ -z "${vegress}" ] && eval vegress=\$vlan${vlan}_egress | ||||
| 		[ -z "${vegress}" ] || vegress="egress-qos-map ${vegress}" | ||||
|  | ||||
| 		# txqueue | ||||
| 		local txqueuelen= | ||||
| 		eval txqueuelen=\$txqueuelen_vlan${vlan} | ||||
| 		eval txqueuelen=\$txqueuelen_${IFACE}_vlan${vlan} | ||||
| 		[ -z "${txqueuelen}" ] && eval txqueuelen=\$txqueuelen_vlan${vlan} | ||||
| 		# mac | ||||
| 		local mac= | ||||
| 		eval mac=\$mac_vlan${vlan} | ||||
| 		eval mac=\$mac_${IFACE}_vlan${vlan} | ||||
| 		[ -z "${mac}" ] && eval mac=\$mac_vlan${vlan} | ||||
| 		# broadcast | ||||
| 		local broadcast= | ||||
| 		eval broadcast=\$broadcast_vlan${vlan} | ||||
| 		eval broadcast=\$broadcast_${IFACE}_vlan${vlan} | ||||
| 		[ -z "${broadcast}" ] && eval broadcast=\$broadcast_vlan${vlan} | ||||
| 		# mtu | ||||
| 		local mtu= | ||||
| 		eval mtu=\$mtu_vlan${vlan} | ||||
| 		eval mtu=\$mtu_${IFACE}_vlan${vlan} | ||||
| 		[ -z "${mtu}" ] && eval mtu=\$mtu_vlan${vlan} | ||||
|  | ||||
| 		# combine it all | ||||
| 		local opts="${txqueuelen:+txqueuelen} ${txqueuelen} ${mac:+address} ${mac} ${broadcast:+broadcast} ${broadcast} ${mtu:+mtu} ${mtu}" | ||||
|  | ||||
| 		veinfo "ip link add link \"${IFACE}\" name \"${vname}\" ${opts} type vlan id \"${vlan}\" ${vflags} ${vingress} ${vegress}" | ||||
| 		e="$(ip link add link "${IFACE}" name "${vname}" ${opts} type vlan id "${vlan}" ${vflags} ${vingress} ${vegress} 2>&1 1>/dev/null)" | ||||
| 		if [ -n "${e}" ]; then | ||||
| 			eend 1 "${e}" | ||||
|   | ||||
| @@ -10,6 +10,12 @@ BOOTDIR=	${LEVELDIR}/boot | ||||
| DEFAULTDIR=	${LEVELDIR}/default | ||||
| SHUTDOWNDIR=	${LEVELDIR}/shutdown | ||||
|  | ||||
| ifeq (${MKNET},) | ||||
| BOOT+= network staticroute | ||||
| endif | ||||
|  | ||||
| INITFILES=	../init.d | ||||
|  | ||||
| MK=		../mk | ||||
| include ${MK}/sys.mk | ||||
| include ${MK}/os.mk | ||||
| @@ -19,19 +25,25 @@ BOOT-${OS}= | ||||
| SHUTDOWN-${OS}= | ||||
| SYSINIT-${OS}= | ||||
|  | ||||
| ifeq (${MKNET},oldnet) | ||||
| BOOT-FreeBSD+= net.lo0 | ||||
| BOOT-Linux+= net.lo | ||||
| BOOT-NetBSD+= net.lo0 | ||||
| endif | ||||
|  | ||||
| BOOT-BSD=	hostid newsyslog savecore syslogd swap-blk | ||||
|  | ||||
| # Generic BSD stuff | ||||
| BOOT-FreeBSD=	hostid net.lo0 newsyslog savecore syslogd | ||||
| BOOT-FreeBSD+=	hostid newsyslog savecore syslogd | ||||
| # FreeBSD specific stuff | ||||
| BOOT-FreeBSD+=	adjkerntz dumpon syscons | ||||
|  | ||||
| BOOT-Linux=	hwclock keymaps modules mtab net.lo procfs termencoding | ||||
| BOOT-Linux+=	hwclock keymaps modules mtab procfs termencoding tmpfiles.setup | ||||
| SHUTDOWN-Linux=	killprocs mount-ro | ||||
| SYSINIT-Linux=	devfs dmesg | ||||
| SYSINIT-Linux=	devfs dmesg sysfs | ||||
|  | ||||
| # Generic BSD stuff | ||||
| BOOT-NetBSD=	hostid net.lo0 newsyslog savecore syslogd | ||||
| BOOT-NetBSD+=	hostid newsyslog savecore syslogd | ||||
| # NetBSD specific stuff | ||||
| BOOT-NetBSD+=	devdb swap-blk ttys wscons | ||||
|  | ||||
| @@ -41,25 +53,35 @@ install: | ||||
| 	if ! test -d "${SYSINITDIR}"; then \ | ||||
| 		${INSTALL} -d ${SYSINITDIR} || exit $$?; \ | ||||
| 		for x in ${SYSINIT}; do \ | ||||
| 			ln -snf ${PREFIX}/etc/init.d/"$$x" ${SYSINITDIR}/"$$x" || exit $$?; \ | ||||
| 		done \ | ||||
| 			if test -n "${PREFIX}"; then \ | ||||
| 				grep -q "keyword .*-prefix" ${INITFILES}/"$$x" && continue; \ | ||||
| 			fi; \ | ||||
| 			ln -snf ${INITDIR}/"$$x" ${SYSINITDIR}/"$$x" || exit $$?; done \ | ||||
| 	fi | ||||
| 	if ! test -d "${BOOTDIR}"; then \ | ||||
| 		${INSTALL} -d ${BOOTDIR} || exit $$?; \ | ||||
| 		for x in ${BOOT}; do \ | ||||
| 			ln -snf ${PREFIX}/etc/init.d/"$$x" ${BOOTDIR}/"$$x" || exit $$?; \ | ||||
| 			if test -n "${PREFIX}"; then \ | ||||
| 				grep -q "keyword .*-prefix" ${INITFILES}/"$$x" && continue; \ | ||||
| 			fi; \ | ||||
| 			ln -snf ${INITDIR}/"$$x" ${BOOTDIR}/"$$x" || exit $$?; \ | ||||
| 		done \ | ||||
| 	fi | ||||
| 	if ! test -d "${DEFAULTDIR}"; then \ | ||||
| 		${INSTALL} -d ${DEFAULTDIR} || exit $$?; \ | ||||
| 		for x in ${DEFAULT}; do \ | ||||
| 			ln -snf ${PREFIX}/etc/init.d/"$$x" ${DEFAULTDIR}/"$$x" || exit $$?; \ | ||||
| 		done \ | ||||
| 			if test -n "${PREFIX}"; then \ | ||||
| 				grep -q "keyword .*-prefix" ${INITFILES}/"$$x" && continue; \ | ||||
| 			fi; \ | ||||
| 			ln -snf ${INITDIR}/"$$x" ${DEFAULTDIR}/"$$x" || exit $$?; done \ | ||||
| 	fi | ||||
| 	if ! test -d "${SHUTDOWNDIR}"; then \ | ||||
| 		${INSTALL} -d ${SHUTDOWNDIR} || exit $$?; \ | ||||
| 		for x in ${SHUTDOWN}; do \ | ||||
| 			ln -snf ${PREFIX}/etc/init.d/"$$x" ${SHUTDOWNDIR}/"$$x" || exit $$?; done \ | ||||
| 			if test -n "${PREFIX}"; then \ | ||||
| 				grep -q "keyword .*-prefix" ${INITFILES}/"$$x" && continue; \ | ||||
| 			fi; \ | ||||
| 			ln -snf ${INITDIR}/"$$x" ${SHUTDOWNDIR}/"$$x" || exit $$?; done \ | ||||
| 	fi | ||||
|  | ||||
| check test:: | ||||
|   | ||||
| @@ -105,7 +105,7 @@ else | ||||
| 	# the last ecmd | ||||
| 	for _e in ebegin eend error errorn einfo einfon ewarn ewarnn ewend \ | ||||
| 		vebegin veend veinfo vewarn vewend; do | ||||
| 		eval "$_e() { local _r; @LIBEXECDIR@/bin/$_e \"\$@\"; _r=\$?; \ | ||||
| 		eval "$_e() { local _r; command $_e \"\$@\"; _r=\$?; \ | ||||
| 		export EINFO_LASTCMD=$_e; return \$_r; }" | ||||
| 	done | ||||
| 	unset _e | ||||
|   | ||||
| @@ -37,14 +37,23 @@ fi | ||||
|  | ||||
| # /run is a new directory for storing volatile runtime data. | ||||
| # Read more about /run at https://lwn.net/Articles/436012 | ||||
| sys="$(rc --sys)" | ||||
|  | ||||
| if [ ! -d /run ]; then | ||||
| 	eerror "The /run directory does not exist. Unable to continue." | ||||
| 	return 1 | ||||
| 	if [ "$sys" = VSERVER ]; then | ||||
| 		if [ -e /run ]; then | ||||
| 		rm -rf /run | ||||
| 		fi | ||||
| 		mkdir /run | ||||
| 	else | ||||
| 		eerror "The /run directory does not exist. Unable to continue." | ||||
| 		return 1 | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
| if mountinfo -q /run; then | ||||
| 	einfo "/run is already mounted, skipping" | ||||
| else | ||||
| if [ "$sys" = VSERVER ]; then | ||||
| 	rm -rf /run/* | ||||
| elif ! mountinfo -q /run; then | ||||
| 	ebegin "Mounting /run" | ||||
| 	rc=0 | ||||
| 	if ! fstabinfo --mount /run; then | ||||
|   | ||||
| @@ -13,21 +13,29 @@ | ||||
| # This script should match the manpage as of 2012/03/12 | ||||
| # | ||||
|  | ||||
| DRYRUN=0 | ||||
|  | ||||
| warninvalid() { | ||||
| 	printf "tmpfiles: ignoring invalid entry on line %d of \`%s'\n" "$LINENUM" "$FILE" | ||||
| 	error=$(( error+1 )) | ||||
| } >&2 | ||||
|  | ||||
| dryrun_or_real() { | ||||
| 	local dryrun= | ||||
| 	[ $DRYRUN -eq 1 ] && dryrun=echo | ||||
| 	$dryrun "$@" | ||||
| } | ||||
|  | ||||
| relabel() { | ||||
| 	local path | ||||
| 	local paths=$1 mode=$2 uid=$3 gid=$4 | ||||
|  | ||||
| 	for path in ${paths}; do | ||||
| 		if [ -e "$path" ]; then | ||||
| 			[ $uid != '-' ] && chown $CHOPTS "$uid" "$path" | ||||
| 			[ $gid != '-' ] && chgrp $CHOPTS "$gid" "$path" | ||||
| 			[ $mode != '-' ] && chmod $CHOPTS "$mode" "$path" | ||||
| 			[ -x /sbin/restorecon ] && restorecon $CHOPTS "$path" | ||||
| 			[ $uid != '-' ] && dryrun_or_real chown $CHOPTS "$uid" "$path" | ||||
| 			[ $gid != '-' ] && dryrun_or_real chgrp $CHOPTS "$gid" "$path" | ||||
| 			[ $mode != '-' ] && dryrun_or_real chmod $CHOPTS "$mode" "$path" | ||||
| 			[ -x /sbin/restorecon ] && dryrun_or_real restorecon $CHOPTS "$path" | ||||
| 		fi | ||||
| 	done | ||||
| } | ||||
| @@ -35,13 +43,13 @@ relabel() { | ||||
| _b() { | ||||
| 	# Create a block device node if it doesn't exist yet | ||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | ||||
| 	[ ! -e "$path" ] && mknod $path b ${arg%:*} ${arg#*:} | ||||
| 	[ ! -e "$path" ] && dryrun_or_real mknod $path b ${arg%:*} ${arg#*:} | ||||
| } | ||||
|  | ||||
| _c() { | ||||
| 	# Create a character device node if it doesn't exist yet | ||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | ||||
| 	[ ! -e "$path" ] && mknod $path c ${arg%:*} ${arg#*:} | ||||
| 	[ ! -e "$path" ] && dryrun_or_real mknod $path c ${arg%:*} ${arg#*:} | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -52,8 +60,8 @@ _f() { | ||||
| 	[ $CREATE -gt 0 ] || return 0 | ||||
|  | ||||
| 	if [ ! -e "$path" ]; then | ||||
| 		install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | ||||
| 		[ -n "$arg" ] && _w "$@" | ||||
| 		dryrun_or_real install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | ||||
| 		[ -z "$arg" ] || _w "$@" | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| @@ -63,8 +71,8 @@ _F() { | ||||
|  | ||||
| 	[ $CREATE -gt 0 ] || return 0 | ||||
|  | ||||
| 	install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | ||||
| 	[ -n "$arg" ] && _w "$@" | ||||
| 	dryrun_or_real install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | ||||
| 	[ -z "$arg" ] || _w "$@" | ||||
| } | ||||
|  | ||||
| _d() { | ||||
| @@ -74,7 +82,7 @@ _d() { | ||||
| 	[ $CREATE -gt 0 ] || return 0 | ||||
|  | ||||
| 	if [ ! -d "$path" ]; then | ||||
| 		install -d -m"$mode" -o"$uid" -g"$gid" "$path" | ||||
| 		dryrun_or_real install -d -m"$mode" -o"$uid" -g"$gid" "$path" | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| @@ -83,18 +91,18 @@ _D() { | ||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 | ||||
|  | ||||
| 	if [ -d "$path" ] && [ $REMOVE -gt 0 ]; then | ||||
| 		find "$path" -mindepth 1 -maxdepth 1 -xdev -exec rm -rf {} + | ||||
| 		dryrun_or_real find "$path" -mindepth 1 -maxdepth 1 -xdev -exec rm -rf {} + | ||||
| 	fi | ||||
|  | ||||
| 	if [ $CREATE -gt 0 ]; then | ||||
| 		install -d -m"$mode" -o"$uid" -g"$gid" "$path" | ||||
| 		dryrun_or_real install -d -m"$mode" -o"$uid" -g"$gid" "$path" | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| _L() { | ||||
| 	# Create a symlink if it doesn't exist yet | ||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | ||||
| 	[ ! -e "$path" ] && ln -s "$args" "$path" | ||||
| 	[ ! -e "$path" ] && dryrun_or_real ln -s "$args" "$path" | ||||
| } | ||||
|  | ||||
| _p() { | ||||
| @@ -104,8 +112,8 @@ _p() { | ||||
| 	[ $CREATE -gt 0 ] || return 0 | ||||
|  | ||||
| 	if [ ! -p "$path" ]; then | ||||
| 		mkfifo -m$mode "$path" | ||||
| 		chown "$uid:$gid" "$path" | ||||
| 		dryrun_or_real mkfifo -m$mode "$path" | ||||
| 		dryrun_or_real chown "$uid:$gid" "$path" | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| @@ -129,9 +137,9 @@ _r() { | ||||
|  | ||||
| 	for path in ${paths}; do | ||||
| 		if [ -f "$path" ]; then | ||||
| 			rm -f "$path" | ||||
| 			dryrun_or_real rm -f "$path" | ||||
| 		elif [ -d "$path" ]; then | ||||
| 			rmdir "$path" | ||||
| 			dryrun_or_real rmdir "$path" | ||||
| 		fi | ||||
| 	done | ||||
| } | ||||
| @@ -145,14 +153,20 @@ _R() { | ||||
| 	[ $REMOVE -gt 0 ] || return 0 | ||||
|  | ||||
| 	for path in ${paths}; do | ||||
| 		[ -d "$path" ] && rm -rf --one-file-system "$path" | ||||
| 		[ -d "$path" ] && dryrun_or_real rm -rf --one-file-system "$path" | ||||
| 	done | ||||
| } | ||||
|  | ||||
| _w() { | ||||
| 	# Write the argument parameter to a file, if it exists. | ||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | ||||
| 	[ -f "$path" ] && echo "$arg" >>"$path" | ||||
| 	if [ -f "$path" ]; then | ||||
| 		if [ $DRYRUN -eq 1 ]; then | ||||
| 			echo "echo \"$arg\" >>\"$path\"" | ||||
| 		else | ||||
| 			echo "$arg" >>"$path" | ||||
| 		fi | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| _z() { | ||||
| @@ -187,6 +201,7 @@ tmpfiles_d='' | ||||
| # `/run/tmpfiles/foo.conf' will always be read after `/etc/tmpfiles.d/bar.conf' | ||||
| for d in ${tmpfiles_dirs} ; do | ||||
| 	[ -d $d ] && for f in ${d}/*.conf ; do | ||||
| 		[ "$f" = "$d/systemd.conf" ] && continue | ||||
| 		[ -f $f ] && tmpfiles_basenames="${tmpfiles_basenames}\n${f##*/}" | ||||
| 	done # for f in ${d} | ||||
| done # for d in ${tmpfiles_dirs} | ||||
| @@ -212,6 +227,11 @@ while [ $# -gt 0 ]; do | ||||
| 	shift | ||||
| done | ||||
|  | ||||
| if [ $(( CLEAN )) -eq 1 ] ; then | ||||
| 	printf '%s clean mode is not implemented\n' "${0##*/}" | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| if [ $(( CREATE + REMOVE )) -ne 1 ] ; then | ||||
| 	printf 'usage: %s [--create] [--remove] [--clean] [--verbose] [--dry-run]\n' "${0##*/}" | ||||
| 	exit 1 | ||||
| @@ -233,51 +253,40 @@ for FILE in $tmpfiles_d ; do | ||||
|  | ||||
| 	# XXX: Upstream says whitespace is NOT permitted in the Path argument. | ||||
| 	# But IS allowed when globs are expanded for the x/r/R/z/Z types. | ||||
| 	while read line; do | ||||
| 	while read cmd path mode uid gid age arg; do | ||||
| 		LINENUM=$(( LINENUM+1 )) | ||||
|  | ||||
| 		# This will skip over comments and empty lines | ||||
| 		set -- $line | ||||
|  | ||||
| 		# Unless we have both command and path, skip this line. | ||||
| 		if [ -z "$1" -o -z "$2" ]; then | ||||
| 		if [ -z "$cmd" -o -z "$path" ]; then | ||||
| 			continue | ||||
| 		fi | ||||
|  | ||||
| 		# whine about invalid entries | ||||
| 		case $1 in | ||||
| 		case $cmd in | ||||
| 			f|F|w|d|D|p|L|c|b|x|r|R|z|Z) ;; | ||||
| 			\#) continue ;; | ||||
| 			*) warninvalid ; continue ;; | ||||
| 		esac | ||||
|  | ||||
| 		cmd=$1 | ||||
| 		path=$2 | ||||
|  | ||||
| 		# fall back on defaults when parameters are passed as '-' | ||||
| 		if [ "$3" = '-' -o "$3" = '' ]; then | ||||
| 			case ${1} in | ||||
| 		if [ "$mode" = '-' -o "$mode" = '' ]; then | ||||
| 			case "$cmd" in | ||||
| 				p|f|F) mode=0644 ;; | ||||
| 				d|D) mode=0755 ;; | ||||
| 				z|Z|x|r|R|L) ;; | ||||
| 			esac | ||||
| 		else | ||||
| 			mode=$3 | ||||
| 		fi | ||||
| 		uid=$4 | ||||
| 		gid=$5 | ||||
| 		age=$6 | ||||
| 		arg=$7 | ||||
|  | ||||
| 		[ ${4} = '-' ] && uid=0 | ||||
| 		[ ${5} = '-' ] && gid=0 | ||||
| 		[ ${6} = '-' ] && age=0 | ||||
| 		[ ${7} = '-' ] && arg='' | ||||
| 		[ "$uid" = '-' -o "$uid" = '' ] && uid=0 | ||||
| 		[ "$gid" = '-' -o "$gid" = '' ] && gid=0 | ||||
| 		[ "$age" = '-' -o "$age" = '' ] && age=0 | ||||
| 		[ "$arg" = '-' -o "$arg" = '' ] && arg='' | ||||
| 		set -- "$path" "$mode" "$uid" "$gid" "$age" "$arg" | ||||
|  | ||||
| 		[ "$VERBOSE" -eq "1" ] && echo _$cmd "$@" | ||||
| 		_$cmd "$@" | ||||
| 		rc=$? | ||||
| 		if [ "${DRYRUN}" -eq "0" ]; then | ||||
| 			_$cmd "$@" | ||||
| 			rc=$? | ||||
| 			[ $rc -ne 0 ] && error=$((error + 1)) | ||||
| 		fi | ||||
| 	done <$FILE | ||||
|   | ||||
| @@ -28,6 +28,8 @@ | ||||
|  * SUCH DAMAGE. | ||||
|  */ | ||||
|  | ||||
| #include <sys/utsname.h> | ||||
|  | ||||
| #include "librc.h" | ||||
|  | ||||
| #define GENDEP          RC_LIBEXECDIR "/sh/gendepends.sh" | ||||
| @@ -747,12 +749,15 @@ rc_deptree_update(void) | ||||
| 	size_t i, k, l; | ||||
| 	bool retval = true; | ||||
| 	const char *sys = rc_sys(); | ||||
| 	struct utsname uts; | ||||
|  | ||||
| 	/* Some init scripts need RC_LIBEXECDIR to source stuff | ||||
| 	   Ideally we should be setting our full env instead */ | ||||
| 	if (!getenv("RC_LIBEXECDIR")) | ||||
| 		setenv("RC_LIBEXECDIR", RC_LIBEXECDIR, 0); | ||||
|  | ||||
| 	if (uname(&uts) == 0) | ||||
| 		setenv("RC_UNAME", uts.sysname, 1); | ||||
| 	/* Phase 1 - source all init scripts and print dependencies */ | ||||
| 	if (!(fp = popen(GENDEP, "r"))) | ||||
| 		return false; | ||||
|   | ||||
| @@ -216,6 +216,7 @@ rc_sys_v2(void) | ||||
| 		} | ||||
| 		/* Now do detection */ | ||||
| 		__STRING_SWITCH(systype) | ||||
| 		__STRING_CASE(RC_SYS_PREFIX)	{ return RC_SYS_PREFIX; } | ||||
| #ifdef __FreeBSD__ | ||||
| 		__STRING_CASE(RC_SYS_JAIL) { return RC_SYS_JAIL; } | ||||
| #endif /* __FreeBSD__ */ | ||||
| @@ -245,6 +246,10 @@ librc_hidden_def(rc_sys_v2) | ||||
| const char * | ||||
| rc_sys_v1(void) | ||||
| { | ||||
| #ifdef PREFIX | ||||
| 	return RC_SYS_PREFIX; | ||||
| #else | ||||
|  | ||||
| #ifdef __FreeBSD__ | ||||
| 	int jailed = 0; | ||||
| 	size_t len = sizeof(jailed); | ||||
| @@ -281,6 +286,7 @@ rc_sys_v1(void) | ||||
| #endif | ||||
|  | ||||
| 	return NULL; | ||||
| #endif /* PREFIX */ | ||||
| } | ||||
| librc_hidden_def(rc_sys_v1) | ||||
|  | ||||
|   | ||||
| @@ -33,10 +33,13 @@ | ||||
|  | ||||
| __BEGIN_DECLS | ||||
|  | ||||
| #define RC_PREFIX "@PREFIX@" | ||||
| #define RC_SYSCONFDIR		"@SYSCONFDIR@" | ||||
| #define RC_LIBDIR               "@PREFIX@/@LIB@/rc" | ||||
| #define RC_LIBEXECDIR           "@LIBEXECDIR@" | ||||
| #ifdef __linux__ | ||||
| #if defined(PREFIX) | ||||
| #define RC_SVCDIR               RC_LIBEXECDIR "/init.d" | ||||
| #elif defined(__linux__) | ||||
| #define RC_SVCDIR               "@PREFIX@/run/openrc" | ||||
| #else | ||||
| #define RC_SVCDIR               RC_LIBEXECDIR "/init.d" | ||||
| @@ -280,6 +283,7 @@ bool rc_service_daemons_crashed(const char *); | ||||
| #define RC_SYS_JAIL    "JAIL" | ||||
| #define RC_SYS_OPENVZ  "OPENVZ" | ||||
| #define RC_SYS_LXC     "LXC" | ||||
| #define RC_SYS_PREFIX  "PREFIX" | ||||
| #define RC_SYS_UML     "UML" | ||||
| #define RC_SYS_VSERVER "VSERVER" | ||||
| #define RC_SYS_XEN0    "XEN0" | ||||
|   | ||||
| @@ -38,7 +38,7 @@ | ||||
| 	"Disable color output",						      \ | ||||
| 	"Display software version",			              \ | ||||
| 	"Run verbosely",						      \ | ||||
| 	"Run quietly" | ||||
| 	"Run quietly (Does not affect errors)" | ||||
|  | ||||
| #define case_RC_COMMON_getopt_case_C  setenv ("EINFO_COLOR", "NO", 1); | ||||
| #define case_RC_COMMON_getopt_case_h  usage (EXIT_SUCCESS); | ||||
|   | ||||
| @@ -60,7 +60,8 @@ extern const char *applet; | ||||
|  * See systemd's src/label.c:label_mkdir | ||||
|  */ | ||||
| static int | ||||
| do_check(char *path, uid_t uid, gid_t gid, mode_t mode, inode_t type, bool trunc) | ||||
| do_check(char *path, uid_t uid, gid_t gid, mode_t mode, inode_t type, | ||||
| 		bool trunc, bool chowner) | ||||
| { | ||||
| 	struct stat st; | ||||
| 	int fd, flags; | ||||
| @@ -132,14 +133,14 @@ do_check(char *path, uid_t uid, gid_t gid, mode_t mode, inode_t type, bool trunc | ||||
| 	} | ||||
|  | ||||
| 	if (mode && (st.st_mode & 0777) != mode) { | ||||
| 		einfo("%s: correcting mode", applet); | ||||
| 		einfo("%s: correcting mode", path); | ||||
| 		if (chmod(path, mode)) { | ||||
| 			eerror("%s: chmod: %s", applet, strerror(errno)); | ||||
| 			return -1; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if (st.st_uid != uid || st.st_gid != gid) { | ||||
| 	if (chowner && (st.st_uid != uid || st.st_gid != gid)) { | ||||
| 		if (st.st_dev || st.st_ino) | ||||
| 			einfo("%s: correcting owner", path); | ||||
| 		if (chown(path, uid, gid)) { | ||||
| @@ -222,19 +223,20 @@ checkpath(int argc, char **argv) | ||||
| 	struct group *gr = NULL; | ||||
| 	inode_t type = inode_unknown; | ||||
| 	int retval = EXIT_SUCCESS; | ||||
| 	bool trunc = 0; | ||||
| 	bool trunc = false; | ||||
| 	bool chowner = false; | ||||
|  | ||||
| 	while ((opt = getopt_long(argc, argv, getoptstring, | ||||
| 		    longopts, (int *) 0)) != -1) | ||||
| 	{ | ||||
| 		switch (opt) { | ||||
| 		case 'D': | ||||
| 			trunc = 1; | ||||
| 			trunc = true; | ||||
| 		case 'd': | ||||
| 			type = inode_dir; | ||||
| 			break; | ||||
| 		case 'F': | ||||
| 			trunc = 1; | ||||
| 			trunc = true; | ||||
| 		case 'f': | ||||
| 			type = inode_file; | ||||
| 			break; | ||||
| @@ -247,6 +249,7 @@ checkpath(int argc, char **argv) | ||||
| 				    applet, optarg); | ||||
| 			break; | ||||
| 		case 'o': | ||||
| 			chowner = true; | ||||
| 			if (parse_owner(&pw, &gr, optarg) != 0) | ||||
| 				eerrorx("%s: owner `%s' not found", | ||||
| 				    applet, optarg); | ||||
| @@ -272,7 +275,7 @@ checkpath(int argc, char **argv) | ||||
| 		gid = gr->gr_gid; | ||||
|  | ||||
| 	while (optind < argc) { | ||||
| 		if (do_check(argv[optind], uid, gid, mode, type, trunc)) | ||||
| 		if (do_check(argv[optind], uid, gid, mode, type, trunc, chowner)) | ||||
| 			retval = EXIT_FAILURE; | ||||
| 		optind++; | ||||
| 	} | ||||
|   | ||||
| @@ -282,7 +282,7 @@ fstabinfo(int argc, char **argv) | ||||
| 		END_ENT; | ||||
|  | ||||
| 		if (!TAILQ_FIRST(files)) | ||||
| 			eerrorx("%s: emtpy fstab", argv[0]); | ||||
| 			eerrorx("%s: empty fstab", argv[0]); | ||||
| 	} | ||||
|  | ||||
| 	if (!TAILQ_FIRST(files)) { | ||||
|   | ||||
| @@ -390,12 +390,8 @@ mountinfo(int argc, char **argv) | ||||
| 	char real_path[PATH_MAX + 1]; | ||||
| 	int opt; | ||||
| 	int result; | ||||
| 	bool quiet; | ||||
| 	char *this_path; | ||||
|  | ||||
| 	/* Ensure that we are only quiet when explicitly told to be */ | ||||
| 	unsetenv("EINFO_QUIET"); | ||||
|  | ||||
| #define DO_REG(_var)							      \ | ||||
| 	if (_var) free(_var);						      \ | ||||
| 	_var = get_regex(optarg); | ||||
| @@ -475,7 +471,6 @@ mountinfo(int argc, char **argv) | ||||
| 	REG_FREE(args.skip_options_regex); | ||||
|  | ||||
| 	result = EXIT_FAILURE; | ||||
| 	quiet = rc_yesno(getenv("EINFO_QUIET")); | ||||
|  | ||||
| 	/* We should report the mounts in reverse order to ease unmounting */ | ||||
| 	TAILQ_FOREACH_REVERSE(s, nodes, rc_stringlist, entries) { | ||||
| @@ -485,7 +480,7 @@ mountinfo(int argc, char **argv) | ||||
| 		if (skip_point_regex && | ||||
| 		    regexec(skip_point_regex, s->value, 0, NULL, 0) == 0) | ||||
| 			continue; | ||||
| 		if (! quiet) | ||||
| 		if (! rc_yesno(getenv("EINFO_QUIET"))) | ||||
| 			printf("%s\n", s->value); | ||||
| 		result = EXIT_SUCCESS; | ||||
| 	} | ||||
|   | ||||
| @@ -343,7 +343,7 @@ do_mark_service(int argc, char **argv) | ||||
| 	if (service == NULL || *service == '\0') | ||||
| 		eerrorx("%s: no service specified", applet); | ||||
|  | ||||
| 	if (strncmp(applet, "mark_", 5) && | ||||
| 	if (!strncmp(applet, "mark_", 5) && | ||||
| 	    (bit = lookup_service_state(applet + 5))) | ||||
| 		ok = rc_service_mark(service, bit); | ||||
| 	else | ||||
|   | ||||
| @@ -191,6 +191,10 @@ env_config(void) | ||||
| 	if (sys) | ||||
| 		setenv("RC_SYS", sys, 1); | ||||
|  | ||||
| #ifdef PREFIX | ||||
| 	setenv("RC_PREFIX", RC_PREFIX, 1); | ||||
| #endif | ||||
|  | ||||
| 	/* Some scripts may need to take a different code path if | ||||
| 	   Linux/FreeBSD, etc | ||||
| 	   To save on calling uname, we store it in an environment variable */ | ||||
|   | ||||
| @@ -315,8 +315,7 @@ get_pid(const char *pidfile, bool quiet) | ||||
|  | ||||
| 	if ((fp = fopen(pidfile, "r")) == NULL) { | ||||
| 		if (!quiet) | ||||
| 			eerror("%s: fopen `%s': %s", | ||||
| 			    applet, pidfile, strerror(errno)); | ||||
| 			eerror("%s: fopen `%s': %s", applet, pidfile, strerror(errno)); | ||||
| 		return -1; | ||||
| 	} | ||||
|  | ||||
| @@ -355,8 +354,7 @@ do_stop(const char *exec, const char *const *argv, | ||||
| 	LIST_FOREACH_SAFE(pi, pids, entries, np) { | ||||
| 		if (test) { | ||||
| 			if (!quiet) | ||||
| 				einfo("Would send signal %d to PID %d", | ||||
| 				    sig, pi->pid); | ||||
| 				einfo("Would send signal %d to PID %d", sig, pi->pid); | ||||
| 			nkilled++; | ||||
| 		} else { | ||||
| 			if (verbose) | ||||
| @@ -417,7 +415,7 @@ run_stop_schedule(const char *exec, const char *const *argv, | ||||
| 	} | ||||
|  | ||||
| 	if (pidfile) { | ||||
| 		pid = get_pid(pidfile, quiet); | ||||
| 		pid = get_pid(pidfile, false); | ||||
| 		if (pid == -1) | ||||
| 			return 0; | ||||
| 	} | ||||
| @@ -436,9 +434,7 @@ run_stop_schedule(const char *exec, const char *const *argv, | ||||
| 				if (tkilled == 0) { | ||||
| 					if (progressed) | ||||
| 						printf("\n"); | ||||
| 					if (! quiet) | ||||
| 						eerror("%s: no matching " | ||||
| 						    "processes found", applet); | ||||
| 						eerror("%s: no matching processes found", applet); | ||||
| 				} | ||||
| 				return tkilled; | ||||
| 			} | ||||
| @@ -508,14 +504,10 @@ run_stop_schedule(const char *exec, const char *const *argv, | ||||
|  | ||||
| 	if (progressed) | ||||
| 		printf("\n"); | ||||
| 	if (! quiet) { | ||||
| 		if (nrunning == 1) | ||||
| 			eerror("%s: %d process refused to stop", | ||||
| 			    applet, nrunning); | ||||
| 		else | ||||
| 			eerror("%s: %d process(es) refused to stop", | ||||
| 			    applet, nrunning); | ||||
| 	} | ||||
| 	if (nrunning == 1) | ||||
| 		eerror("%s: %d process refused to stop", applet, nrunning); | ||||
| 	else | ||||
| 		eerror("%s: %d process(es) refused to stop", applet, nrunning); | ||||
|  | ||||
| 	return -nrunning; | ||||
| } | ||||
| @@ -1295,7 +1287,7 @@ start_stop_daemon(int argc, char **argv) | ||||
| 		/* We don't redirect stdin as some daemons may need it */ | ||||
| 		if (background || quiet || redirect_stdout) | ||||
| 			dup2(stdout_fd, STDOUT_FILENO); | ||||
| 		if (background || quiet || redirect_stderr) | ||||
| 		if (background || redirect_stderr) | ||||
| 			dup2(stderr_fd, STDERR_FILENO); | ||||
|  | ||||
| 		for (i = getdtablesize() - 1; i >= 3; --i) | ||||
| @@ -1326,12 +1318,9 @@ start_stop_daemon(int argc, char **argv) | ||||
| 				return -1; | ||||
| 			} | ||||
| 		} while (!WIFEXITED(i) && !WIFSIGNALED(i)); | ||||
| 		if (!WIFEXITED(i) || WEXITSTATUS(i) != 0) { | ||||
| 			if (!quiet) | ||||
| 				eerrorx("%s: failed to start `%s'", | ||||
| 				    applet, exec); | ||||
| 			exit(EXIT_FAILURE); | ||||
| 		} | ||||
| 		if (!WIFEXITED(i) || WEXITSTATUS(i) != 0) | ||||
| 			eerrorx("%s: failed to start `%s'", applet, exec); | ||||
|  | ||||
| 		pid = spid; | ||||
| 	} | ||||
|  | ||||
| @@ -1365,7 +1354,7 @@ start_stop_daemon(int argc, char **argv) | ||||
| 				alive = true; | ||||
| 		} else { | ||||
| 			if (pidfile) { | ||||
| 				pid = get_pid(pidfile, true); | ||||
| 				pid = get_pid(pidfile, false); | ||||
| 				if (pid == -1) { | ||||
| 					eerrorx("%s: did not " | ||||
| 					    "create a valid" | ||||
|   | ||||
| @@ -18,7 +18,7 @@ l3:3:wait:/sbin/rc default | ||||
| l4:4:wait:/sbin/rc default | ||||
| l5:5:wait:/sbin/rc default | ||||
| l6:6:wait:/sbin/rc reboot | ||||
| l6r:6:wait:/sbin/reboot -dk | ||||
| l6r:6:wait:/sbin/reboot -d | ||||
| #z6:6:respawn:/sbin/sulogin | ||||
|  | ||||
| # new-style single-user | ||||
|   | ||||
| @@ -9,10 +9,6 @@ srcdir=${srcdir:-.} | ||||
| top_builddir=${top_builddir:-${top_srcdir}} | ||||
| builddir=${builddir:-${srcdir}} | ||||
|  | ||||
| export LD_LIBRARY_PATH=${top_builddir}/src/libeinfo:${top_builddir}/src/librc:${LD_LIBRARY_PATH} | ||||
| export PATH=${top_builddir}/src/rc:${PATH} | ||||
|  | ||||
|  | ||||
| if [ ! -f ${top_srcdir}/sh/functions.sh ] ; then | ||||
| 	echo "functions.sh not yet created !?" 1>&2 | ||||
| 	exit 1 | ||||
| @@ -21,6 +17,9 @@ elif ! . ${top_srcdir}/sh/functions.sh; then | ||||
| 	exit 1 | ||||
| fi | ||||
|  | ||||
| export LD_LIBRARY_PATH=${top_builddir}/src/libeinfo:${top_builddir}/src/librc:${LD_LIBRARY_PATH} | ||||
| export PATH=${top_builddir}/src/rc:${PATH} | ||||
|  | ||||
| cd ${top_srcdir}/src/rc | ||||
| ${MAKE:-make} links >/dev/null | ||||
| cd - | ||||
|   | ||||
		Reference in New Issue
	
	Block a user