Compare commits
	
		
			97 Commits
		
	
	
		
			openrc-0.1
			...
			openrc-0.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 9fdee75936 | ||
|   | dd261a2a54 | ||
|   | b36ef234be | ||
|   | a2c3660b87 | ||
|   | e473ab968c | ||
|   | b8a5a1a309 | ||
|   | 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 | 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 | # Build pkgconfig or not | ||||||
| MKPKGCONFIG?=	yes | MKPKGCONFIG?=	yes | ||||||
| @@ -25,7 +30,9 @@ include ${MK}/dist.mk | |||||||
| include ${MK}/git.mk | include ${MK}/git.mk | ||||||
|  |  | ||||||
| _installafter: | _installafter: | ||||||
| ifneq ($(OS),Linux) | ifeq (${MKPREFIX},yes) | ||||||
|  | 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d | ||||||
|  | else ifneq (${OS},Linux) | ||||||
| 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d | 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/init.d | ||||||
| endif | endif | ||||||
| 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/tmp | 	${INSTALL} -d ${DESTDIR}/${LIBEXECDIR}/tmp | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
| NAME=		openrc | NAME=		openrc | ||||||
| VERSION=	0.10.2 | VERSION=	0.11.5 | ||||||
| PKG=		${NAME}-${VERSION} | PKG=		${NAME}-${VERSION} | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								README
									
									
									
									
									
								
							| @@ -10,7 +10,9 @@ You may wish to tweak the installation with the below arguments | |||||||
| PROGLDFLAGS=-static | PROGLDFLAGS=-static | ||||||
| LIBNAME=lib64 | LIBNAME=lib64 | ||||||
| DESTDIR=/tmp/openrc-image | DESTDIR=/tmp/openrc-image | ||||||
|  | MKNET=oldnet | ||||||
| MKPAM=pam | MKPAM=pam | ||||||
|  | MKPREFIX=yes | ||||||
| MKPKGCONFIG=no | MKPKGCONFIG=no | ||||||
| MKSELINUX=yes | MKSELINUX=yes | ||||||
| MKSTATICLIBS=no | 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. | You may need to use PROGLDFLAGS=-Wl,-Bstatic on glibc instead of just -static. | ||||||
| If you debug memory under valgrind, add -DDEBUG_MEMORY to your CPPFLAGS | If you debug memory under valgrind, add -DDEBUG_MEMORY to your CPPFLAGS | ||||||
| so that all malloc memory should be freed at exit. | so that all malloc memory should be freed at exit. | ||||||
|  | If you are building OpenRC for a Gentoo Prefix installation, add | ||||||
|  | MKPREFIX=yes. | ||||||
|  |  | ||||||
| You can also brand OpenRC if you so wish like so | You can also brand OpenRC if you so wish like so | ||||||
| BRANDING=\"Gentoo/$(uname -s)\" | BRANDING=\"Gentoo/$(uname -s)\" | ||||||
|   | |||||||
							
								
								
									
										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} | DIR=	${CONFDIR} | ||||||
| CONF=	bootmisc fsck hostname localmount network staticroute urandom \ | CONF=	bootmisc fsck hostname localmount netmount urandom tmpfiles \ | ||||||
| 	${CONF-${OS}} | 		${CONF-${OS}} | ||||||
|  |  | ||||||
|  | ifeq (${MKNET},) | ||||||
|  | CONF+= network staticroute | ||||||
| TARGETS+=	network staticroute | TARGETS+=	network staticroute | ||||||
| CLEANFILES+=	network staticroute | CLEANFILES+=	network staticroute | ||||||
|  | endif | ||||||
|  |  | ||||||
| MK=	../mk | MK=	../mk | ||||||
| include ${MK}/os.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 | # consolefont specifies the default font that you'd like Linux to use on the | ||||||
| # console.  You can find a good selection of fonts in /usr/share/consolefonts; | # console.  You can find a good selection of fonts in /usr/share/consolefonts; | ||||||
| # you shouldn't specify the trailing ".psf.gz", just the font name below. | # you shouldn't specify the trailing ".psf.gz", just the font name below. | ||||||
| # To use the default console font, comment out the CONSOLEFONT setting below. | # To use the default console font, comment out the CONSOLEFONT setting below. | ||||||
| # This setting is used by the /etc/init.d/consolefont script (NOTE: if you do |  | ||||||
| # not want to use it, run "rc-update del consolefont boot" as root). |  | ||||||
| consolefont="default8x16" | consolefont="default8x16" | ||||||
|  |  | ||||||
| # consoletranslation is the charset map file to use.  Leave commented to use | # consoletranslation is the charset map file to use.  Leave commented to use | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
| # Sets the level at which logging of messages is done to the | # Sets the level at which logging of messages is done to the | ||||||
| # console.  See dmesg(8) for more info. | # console.  See dmesg(1) for more info. | ||||||
| dmesg_level="1" | 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 | # 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 | # 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 | # 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 | # the interface. 0 is disable and any other number of seconds is how | ||||||
| # is how long we wait for carrier. The current default is 3 seconds | # long we wait for carrier. The current default is disabled. | ||||||
| #carrier_timeout_eth0=-1 | #carrier_timeout_eth0=0 | ||||||
|  |  | ||||||
| # You may wish to disable the interface being brought down when stopping. | # You may wish to disable the interface being brought down when stopping. | ||||||
| # This is only of use for WakeOnLan. | # This is only of use for WakeOnLan. | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ | |||||||
| # In other words, you probably should DO NOTHING HERE... | # In other words, you probably should DO NOTHING HERE... | ||||||
|  |  | ||||||
| # Prefer ifconfig over iproute2 | # Prefer ifconfig over iproute2 | ||||||
| #modules="ifconfig" | #modules="!iproute2" | ||||||
|  |  | ||||||
| # You can also specify other modules for an interface | # You can also specify other modules for an interface | ||||||
| # In this case we prefer udhcpc over dhcpcd | # 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 | # If you don't specify an interface then we prefer iproute2 if it's installed | ||||||
| # To prefer ifconfig over iproute2 | # To prefer ifconfig over iproute2 | ||||||
| #modules="ifconfig" | #modules="!iproute2" | ||||||
|  |  | ||||||
| # For a static configuration, use something like this | # For a static configuration, use something like this | ||||||
| # (They all do exactly the same thing btw) | # (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 | # 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. | # 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. | # You may wish to disable the interface being brought down when stopping. | ||||||
| # This is only of use for WakeOnLan. | # This is only of use for WakeOnLan. | ||||||
| #ifdown_eth0="NO" | #ifdown_eth0="NO" | ||||||
| @@ -552,26 +559,34 @@ | |||||||
| # You can also configure the VLAN - see for ip man page for more details | # 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" | # 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' | # 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" | #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: | # The following shows the old set_name_type setting and what new option to set: | ||||||
| # Using eth9 & VLAN VID 26 as an example. | # Using eth9 & VLAN VID 26 as an example. | ||||||
| # VLAN_PLUS_VID         vlan26_name="vlan0026" | # VLAN_PLUS_VID         vlan26_name="vlan0026" | ||||||
| # VLAN_PLUS_VID_NO_PAD  vlan26_name="vlan26" | # VLAN_PLUS_VID_NO_PAD  vlan26_name="vlan26" | ||||||
| # DEV_PLUS_VID          vlan26_name="eth9.0026" | # DEV_PLUS_VID          eth9_vlan26_name="eth9.0026" | ||||||
| # DEV_PLUS_VID_NO_PAD   vlan26_name="eth9.26" | # DEV_PLUS_VID_NO_PAD   eth9_vlan26_name="eth9.26" | ||||||
|  |  | ||||||
| # Set the vlan flags | # Set the vlan flags | ||||||
| #vlan1_flags="reorder_hdr off gvrp on loose_binding on" | #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 | # Configure in/egress maps | ||||||
| #vlan1_ingress="2:6 3:5" | #vlan1_ingress="2:6 3:5" | ||||||
| #vlan1_egress="1:2" | #eth0_vlan1_egress="1:2" | ||||||
|  |  | ||||||
| #config_vlan1="172.16.3.1/23" | #config_vlan1="172.16.2.1/24" | ||||||
| #config_vlan2="172.16.2.1/23" | #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 | # NOTE: Vlans can be configured with a . in their interface names | ||||||
| # When configuring vlans with this name type, you need to replace . with a _ | # 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 | # ppp devices - we need to depend function on the bonded interfaces | ||||||
| #rc_net_bond0_need="net.eth0 net.eth1" | #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 | # Classical IP over ATM | ||||||
| @@ -1111,6 +1137,13 @@ | |||||||
| # Hypothetical network card that requires a change-eeprom toggle to enable flashing | # Hypothetical network card that requires a change-eeprom toggle to enable flashing | ||||||
| #ethtool_order_eth0="change-eeprom flash change pause coalesce ring offload nfc rxfh-indir ntuple" | #ethtool_order_eth0="change-eeprom flash change pause coalesce ring offload nfc rxfh-indir ntuple" | ||||||
|  |  | ||||||
|  | #----------------------------------------------------------------------------- | ||||||
|  | # Firewalld support | ||||||
|  | # If you are using the firewalld daemon to configure your firewall | ||||||
|  | # settings and you have specific zones you want to apply to your | ||||||
|  | # interfaces, you can do this here. | ||||||
|  | #firewalld_zone_eth0="myzone" | ||||||
|  |  | ||||||
| ############################################################################## | ############################################################################## | ||||||
| # ADVANCED CONFIGURATION | # ADVANCED CONFIGURATION | ||||||
| # | # | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ | |||||||
| # This is the subsystem type. Valid options on FreeBSD: | # This is the subsystem type. Valid options on FreeBSD: | ||||||
| # ""        - nothing special | # ""        - nothing special | ||||||
| # "jail"    - FreeBSD jails | # "jail"    - FreeBSD jails | ||||||
|  | # "prefix"  - Prefix | ||||||
| # If this is commented out, automatic detection will be used. | # If this is commented out, automatic detection will be used. | ||||||
| # | # | ||||||
| # This should be set to the value representing the environment this file is | # This should be set to the value representing the environment this file is | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ | |||||||
| # ""        - nothing special | # ""        - nothing special | ||||||
| # "lxc"     - Linux Containers | # "lxc"     - Linux Containers | ||||||
| # "openvz"  - Linux OpenVZ | # "openvz"  - Linux OpenVZ | ||||||
|  | # "prefix"  - Prefix | ||||||
| # "uml"     - Usermode Linux | # "uml"     - Usermode Linux | ||||||
| # "vserver" - Linux vserver | # "vserver" - Linux vserver | ||||||
| # "xen0"    - Xen0 Domain | # "xen0"    - Xen0 Domain | ||||||
| @@ -18,3 +19,11 @@ | |||||||
| # This is the number of tty's used in most of the rc-scripts (like | # This is the number of tty's used in most of the rc-scripts (like | ||||||
| # consolefont, numlock, etc ...) | # consolefont, numlock, etc ...) | ||||||
| rc_tty_number=12 | rc_tty_number=12 | ||||||
|  |  | ||||||
|  | # 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: | # This is the subsystem type. Valid options on NetBSD: | ||||||
| # ""        - nothing special | # ""        - nothing special | ||||||
|  | # "prefix"  - Prefix | ||||||
| # "xen0"    - Xen0 Domain | # "xen0"    - Xen0 Domain | ||||||
| # "xenU"    - XenU Domain | # "xenU"    - XenU Domain | ||||||
| # If this is commented out, automatic detection will be used. | # If this is commented out, automatic detection will be used. | ||||||
|   | |||||||
| @@ -94,6 +94,10 @@ | |||||||
| # These variables are documented here, but should be configured in | # These variables are documented here, but should be configured in | ||||||
| # /etc/conf.d/foo for service foo and NOT enabled here unless you | # /etc/conf.d/foo for service foo and NOT enabled here unless you | ||||||
| # really want them to work on a global basis. | # really want them to work on a global basis. | ||||||
|  | # If your service has characters in its name which are not legal in | ||||||
|  | # shell variable names and you configure the variables for it in this | ||||||
|  | # file, those characters should be replaced with underscores in the | ||||||
|  | # variable names as shown below. | ||||||
|  |  | ||||||
| # Some daemons are started and stopped via start-stop-daemon. | # Some daemons are started and stopped via start-stop-daemon. | ||||||
| # We can set some things on a per service basis, like the nicelevel. | # We can set some things on a per service basis, like the nicelevel. | ||||||
| @@ -116,6 +120,13 @@ | |||||||
| #rc_foo_need="openvpn" | #rc_foo_need="openvpn" | ||||||
| #rc_foo_after="clock" | #rc_foo_after="clock" | ||||||
|  |  | ||||||
|  | # Below is an example for service foo-bar. Note that the '-' is illegal | ||||||
|  | # in a shell variable name, so we convert it to an underscore. | ||||||
|  | # example for service foo-bar. | ||||||
|  | #rc_foo_bar_config="/etc/foo-bar" | ||||||
|  | #rc_foo_bar_need="openvpn" | ||||||
|  | #rc_foo_bar_after="clock" | ||||||
|  |  | ||||||
| # You can also remove dependencies. | # You can also remove dependencies. | ||||||
| # This is mainly used for saying which servies do NOT provide net. | # This is mainly used for saying which servies do NOT provide net. | ||||||
| #rc_net_tap0_provide="!net" | #rc_net_tap0_provide="!net" | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								init.d/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								init.d/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -41,3 +41,4 @@ syslogd | |||||||
| termencoding | termencoding | ||||||
| ttys | ttys | ||||||
| wscons | wscons | ||||||
|  | tmpfiles.setup | ||||||
|   | |||||||
| @@ -1,12 +1,18 @@ | |||||||
| 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 swapfiles.in \ | 	root.in savecache.in swap.in swapfiles.in \ | ||||||
| 	swclock.in sysctl.in urandom.in ${SRCS-${OS}} | 	tmpfiles.setup.in swclock.in sysctl.in urandom.in ${SRCS-${OS}} | ||||||
| BIN=	${OBJS} | BIN=	${OBJS} | ||||||
|  |  | ||||||
|  | # Build our old net foo or not | ||||||
|  | ifeq (${MKNET},) | ||||||
|  | SRCS+= network.in staticroute.in | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | ifeq (${MKNET},oldnet) | ||||||
| INSTALLAFTER=	_installafter_net.lo | INSTALLAFTER=	_installafter_net.lo | ||||||
| CLEANFILES+=	net.lo | SRCS+= net.lo.in | ||||||
| TARGETS+=	net.lo | endif | ||||||
|  |  | ||||||
| MK=	../mk | MK=	../mk | ||||||
| include ${MK}/os.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 \ | SRCS-FreeBSD=	hostid.in moused.in newsyslog.in pf.in rarpd.in rc-enabled.in \ | ||||||
| 		rpcbind.in savecore.in syslogd.in | 		rpcbind.in savecore.in syslogd.in | ||||||
| # These are FreeBSD specific | # These are FreeBSD specific | ||||||
| SRCS-FreeBSD+=	adjkerntz.in devd.in dumpon.in ipfw.in mixer.in nscd.in \ | SRCS-FreeBSD+=	adjkerntz.in devd.in dumpon.in encswap.in ipfw.in \ | ||||||
| 		powerd.in syscons.in | 		mixer.in nscd.in powerd.in syscons.in | ||||||
|  |  | ||||||
| NET_LO-Linux=	net.lo | NET_LO-Linux=	net.lo | ||||||
| SRCS-Linux=	devfs.in dmesg.in hwclock.in consolefont.in keymaps.in \ | 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 | 	   [ "$clock" != "UTC" -a ! -e /etc/wall_cmos_clock ]; then | ||||||
| 		need root | 		need root | ||||||
| 	fi | 	fi | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ depend() | |||||||
| 	need localmount | 	need localmount | ||||||
| 	before logger | 	before logger | ||||||
| 	after clock sysctl | 	after clock sysctl | ||||||
| 	keyword -timeout | 	keyword -prefix -timeout | ||||||
| } | } | ||||||
|  |  | ||||||
| : ${wipe_tmp:=${WIPE_TMP:-yes}} | : ${wipe_tmp:=${WIPE_TMP:-yes}} | ||||||
| @@ -112,7 +112,7 @@ start() | |||||||
| 		fi | 		fi | ||||||
| 	done | 	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/lock /run/lock | ||||||
| 		migrate_to_run	/var/run /run | 		migrate_to_run	/var/run /run | ||||||
| 	fi | 	fi | ||||||
| @@ -196,3 +196,5 @@ stop() | |||||||
|  |  | ||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
|  |  | ||||||
|  | # vim: ft=sh | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ depend() | |||||||
| { | { | ||||||
| 	need localmount termencoding | 	need localmount termencoding | ||||||
| 	after hotplug bootmisc | 	after hotplug bootmisc | ||||||
| 	keyword -openvz -uml -vserver -xenu -lxc | 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ depend() { | |||||||
| 	need localmount | 	need localmount | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
| 	before net.lo0 | 	before net.lo0 | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start_pre() { | start_pre() { | ||||||
|   | |||||||
| @@ -5,8 +5,9 @@ | |||||||
| description="Mount system critical filesystems in /dev." | description="Mount system critical filesystems in /dev." | ||||||
|  |  | ||||||
| depend() { | depend() { | ||||||
| 	use dev | 	use dev-mount | ||||||
| 	keyword -vserver | 	before dev | ||||||
|  | 	keyword -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| start() { | start() { | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ description="Set the dmesg level for a cleaner boot" | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	before dev modules | 	before dev modules | ||||||
| 	keyword -vserver | 	keyword -lxc -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ description="Configures a specific kernel dump device." | |||||||
|  |  | ||||||
| depend() { | depend() { | ||||||
| 	need swap | 	need swap | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() { | 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() | depend() | ||||||
| { | { | ||||||
| 	use dev clock modules | 	use dev clock modules | ||||||
| 	keyword -jail -openvz -timeout -vserver -lxc | 	keyword -jail -openvz -prefix -timeout -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| _abort() { | _abort() { | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ depend() | |||||||
| { | { | ||||||
| 	use root | 	use root | ||||||
| 	before devd net | 	before devd net | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| _set() | _set() | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| description="Sets the hostname of the machine." | description="Sets the hostname of the machine." | ||||||
|  |  | ||||||
| depend() { | depend() { | ||||||
| 	keyword -lxc | 	keyword -prefix -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ depend() | |||||||
| 	else | 	else | ||||||
| 		before * | 		before * | ||||||
| 	fi | 	fi | ||||||
| 	keyword -openvz -uml -vserver -xenu -lxc | 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| setupopts() | setupopts() | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ depend() | |||||||
| { | { | ||||||
| 	need localmount termencoding | 	need localmount termencoding | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
| 	keyword -openvz -uml -vserver -xenu -lxc | 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -4,6 +4,11 @@ | |||||||
|  |  | ||||||
| description="Kill all processes so we can unmount disks cleanly." | description="Kill all processes so we can unmount disks cleanly." | ||||||
|  |  | ||||||
|  | depend() | ||||||
|  | { | ||||||
|  | 	keyword -prefix | ||||||
|  | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
| { | { | ||||||
| 	ebegin "Terminating remaining processes" | 	ebegin "Terminating remaining processes" | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ depend() | |||||||
| 	need fsck | 	need fsck | ||||||
| 	use lvm modules mtab | 	use lvm modules mtab | ||||||
| 	after lvm modules | 	after lvm modules | ||||||
| 	keyword -jail -openvz -vserver -lxc | 	keyword -jail -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ extra_commands="restore" | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| restore() | restore() | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ description="Loads a user defined list of kernel modules." | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	use isapnp | 	use isapnp | ||||||
| 	keyword -openvz -vserver -lxc | 	keyword -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -7,11 +7,13 @@ description="Re-mount filesytems read-only for a clean reboot." | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need killprocs savecache | 	need killprocs savecache | ||||||
| 	keyword -openvz -vserver -lxc | 	keyword -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
| { | { | ||||||
|  | 	local ret=0 | ||||||
|  |  | ||||||
| 	# Flush all pending disk writes now | 	# Flush all pending disk writes now | ||||||
| 	sync; sync | 	sync; sync | ||||||
|  |  | ||||||
| @@ -39,6 +41,9 @@ start() | |||||||
| 	do_unmount "umount -r" \ | 	do_unmount "umount -r" \ | ||||||
| 		--skip-point-regex "$m" \ | 		--skip-point-regex "$m" \ | ||||||
| 		"${fs:+--skip-fstype-regex}" $fs --nonetdev | 		"${fs:+--skip-fstype-regex}" $fs --nonetdev | ||||||
|  | 	ret=$? | ||||||
|  |  | ||||||
| 	eoutdent | 	eoutdent | ||||||
| 	eend $? |  | ||||||
|  | 	eend $ret | ||||||
| } | } | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ depend() | |||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ description="Update /etc/mtab to match what the kernel knows about" | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need root | 	need root | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -19,14 +19,14 @@ depend() | |||||||
| 	local IFVAR=$(shell_var "${IFACE}") | 	local IFVAR=$(shell_var "${IFACE}") | ||||||
|  |  | ||||||
| 	need localmount | 	need localmount | ||||||
| 	if [ "$RC_UNAME" = Linux ]; then | 	if [ "$RC_UNAME" = Linux -a "$IFACE" != lo ]; then | ||||||
| 		need sysfs | 		need sysfs | ||||||
| 	fi | 	fi | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
| 	keyword -jail -vserver | 	keyword -jail -prefix -vserver | ||||||
|  |  | ||||||
| 	case "${IFACE}" in | 	case "${IFACE}" in | ||||||
| 		lo|lo0) provide lo;; | 		lo|lo0) ;; | ||||||
| 		*) | 		*) | ||||||
| 			after net.lo net.lo0 dbus | 			after net.lo net.lo0 dbus | ||||||
| 			provide net | 			provide net | ||||||
| @@ -108,7 +108,7 @@ _wait_for_carrier() | |||||||
| 	_has_carrier  && return 0 | 	_has_carrier  && return 0 | ||||||
|  |  | ||||||
| 	eval timeout=\$carrier_timeout_${IFVAR} | 	eval timeout=\$carrier_timeout_${IFVAR} | ||||||
| 	timeout=${timeout:-${carrier_timeout:-5}} | 	timeout=${timeout:-${carrier_timeout:-0}} | ||||||
|  |  | ||||||
| 	# Incase users don't want this nice feature ... | 	# Incase users don't want this nice feature ... | ||||||
| 	[ ${timeout} -le 0 ] && return 0 | 	[ ${timeout} -le 0 ] && return 0 | ||||||
|   | |||||||
| @@ -2,62 +2,26 @@ | |||||||
| # Copyright (c) 2007-2009 Roy Marples <roy@marples.name> | # Copyright (c) 2007-2009 Roy Marples <roy@marples.name> | ||||||
| # Released under the 2-clause BSD license. | # Released under the 2-clause BSD license. | ||||||
|  |  | ||||||
| description="Mounts network shares according to /etc/fstab." | description="Mounts network shares, other than NFS, according to /etc/fstab." | ||||||
|  | # We skip all NFS shares in this script because they require extra | ||||||
| need_portmap() | # daemons to be running on the client in order to work correctly. | ||||||
| { | # It is best to allow nfs-utils to handle all nfs shares. | ||||||
| 	local opts= |  | ||||||
| 	local IFS=" |  | ||||||
| " |  | ||||||
| 	set -- $(fstabinfo --options --fstype nfs,nfs4) |  | ||||||
| 	for opts; do |  | ||||||
| 		case ,$opts, in |  | ||||||
| 			*,noauto,*|*,nolock,*);; |  | ||||||
| 			*) return 0;; |  | ||||||
| 		esac |  | ||||||
| 	done |  | ||||||
| 	return 1 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| depend() | 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 | 	config /etc/fstab | ||||||
| 	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 | ||||||
| 	keyword -jail -vserver | 	keyword -jail -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
| { | { | ||||||
| 	local myneed= myuse= pmap="portmap" nfsmounts= |  | ||||||
| 	[ -x @SYSCONFDIR@/init.d/rpcbind ] && pmap="rpcbind" |  | ||||||
|  |  | ||||||
| 	local x= fs= rc= | 	local x= fs= rc= | ||||||
| 	for x in $net_fs_list $extra_net_fs_list; do | 	for x in $net_fs_list $extra_net_fs_list; do | ||||||
| 		case "$x" in | 		case "$x" in | ||||||
| 			nfs|nfs4) | 			nfs|nfs4) | ||||||
| 			# If the nfsmount script took care of the nfs | 			continue | ||||||
| 			# 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 |  | ||||||
| 			;; | 			;; | ||||||
| 		esac | 		esac | ||||||
| 		fs="$fs${fs:+,}$x" | 		fs="$fs${fs:+,}$x" | ||||||
| @@ -82,7 +46,14 @@ stop() | |||||||
| 	. "$RC_LIBEXECDIR"/sh/rc-mount.sh | 	. "$RC_LIBEXECDIR"/sh/rc-mount.sh | ||||||
|  |  | ||||||
| 	for x in $net_fs_list $extra_net_fs_list; do | 	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 | 	done | ||||||
| 	if [ -n "$fs" ]; then | 	if [ -n "$fs" ]; then | ||||||
| 		umount -at $fs || eerror "Failed to simply unmount filesystems" | 		umount -at $fs || eerror "Failed to simply unmount filesystems" | ||||||
| @@ -91,7 +62,14 @@ stop() | |||||||
| 	eindent | 	eindent | ||||||
| 	fs= | 	fs= | ||||||
| 	for x in $net_fs_list $extra_net_fs_list; do | 	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 | 	done | ||||||
| 	[ -n "$fs" ] && fs="^($fs)$" | 	[ -n "$fs" ] && fs="^($fs)$" | ||||||
| 	do_unmount umount ${fs:+--fstype-regex} $fs --netdev | 	do_unmount umount ${fs:+--fstype-regex} $fs --netdev | ||||||
|   | |||||||
| @@ -12,8 +12,10 @@ depend() | |||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
| 	provide net | 	if [ -n "$(interfaces)" ]; then | ||||||
| 	keyword -jail -vserver | 		provide net | ||||||
|  | 	fi | ||||||
|  | 	keyword -jail -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| uniqify() | uniqify() | ||||||
| @@ -219,12 +221,6 @@ start() | |||||||
| 		eend $? | 		eend $? | ||||||
| 	fi | 	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" | 	einfo "Starting network" | ||||||
| 	routeflush | 	routeflush | ||||||
| 	if [ "$RC_UNAME" = "Linux" ]; then | 	if [ "$RC_UNAME" = "Linux" ]; then | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ required_files="/etc/newsyslog.conf" | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	keyword -openvz -vserver -lxc | 	keyword -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| _setleds() | _setleds() | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ extra_started_commands="reload" | |||||||
|  |  | ||||||
| depend() { | depend() { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ depend() | |||||||
| 	need localmount | 	need localmount | ||||||
| 	use logger | 	use logger | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start_pre() | start_pre() | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ depend() | |||||||
| { | { | ||||||
| 	use modules devfs | 	use modules devfs | ||||||
| 	need localmount | 	need localmount | ||||||
| 	keyword -openvz -vserver -lxc | 	keyword -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ depend() | |||||||
| 	need localmount net | 	need localmount net | ||||||
| 	after * | 	after * | ||||||
| 	before local | 	before local | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ description="Mount the root fs read/write" | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need fsck | 	need fsck | ||||||
| 	keyword -jail -openvz -vserver -lxc | 	keyword -jail -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -13,6 +13,14 @@ start() | |||||||
| 			return 1 | 			return 1 | ||||||
| 		fi | 		fi | ||||||
| 	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" | 	ebegin "Saving dependency cache" | ||||||
| 	local rc= | 	local rc= | ||||||
| 	if [ ! -d "$RC_LIBEXECDIR"/cache ]; then | 	if [ ! -d "$RC_LIBEXECDIR"/cache ]; then | ||||||
|   | |||||||
| @@ -6,8 +6,9 @@ description="Saves a kernel dump." | |||||||
|  |  | ||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need localmount | 	need dumpon localmount | ||||||
| 	keyword -jail | 	before encswap | ||||||
|  | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ depend() | |||||||
| { | { | ||||||
| 	provide net | 	provide net | ||||||
| 	use network | 	use network | ||||||
| 	keyword -jail -vserver | 	keyword -jail -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| pre_flight_checks() | pre_flight_checks() | ||||||
| @@ -93,11 +93,6 @@ do_routes() | |||||||
|  |  | ||||||
| start() | 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" | 	do_routes "Adding" "add" | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	before fsck | 	before fsck | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	before localmount | 	before localmount | ||||||
| 	keyword -jail -openvz -vserver -lxc | 	keyword -jail -openvz -prefix -vserver -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -31,14 +31,16 @@ stop() | |||||||
|  |  | ||||||
| 	case "$RC_UNAME" in | 	case "$RC_UNAME" in | ||||||
| 		Linux) | 		Linux) | ||||||
| 			while read filename type rest; do | 			if [ -e /proc/swaps ]; then | ||||||
| 				case "$type" in | 				while read filename type rest; do | ||||||
| 					file) swapoff $filename >/dev/null;; | 					case "$type" in | ||||||
| 				esac | 						file) swapoff $filename >/dev/null;; | ||||||
| 				case "$filename" in | 					esac | ||||||
| 					/dev/loop*) swapoff $filename >/dev/null;; | 					case "$filename" in | ||||||
| 				esac | 						/dev/loop*) swapoff $filename >/dev/null;; | ||||||
| 			done < /proc/swaps | 					esac | ||||||
|  | 				done < /proc/swaps | ||||||
|  | 			fi | ||||||
| 			;; | 			;; | ||||||
| 	esac | 	esac | ||||||
| 	eend 0 | 	eend 0 | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ depend() | |||||||
| { | { | ||||||
| 	before * | 	before * | ||||||
| 	provide clock | 	provide clock | ||||||
| 	keyword -openvz -uml -vserver -xenu -lxc | 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||||
| } | } | ||||||
|  |  | ||||||
| # swclock is an OpenRC built in | # swclock is an OpenRC built in | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
|  |  | ||||||
| depend() { | depend() { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	keyword -jail | 	keyword -jail -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() { | start() { | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	before bootmisc logger | 	before bootmisc logger | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	before bootmisc logger | 	before bootmisc logger | ||||||
| 	keyword -lxc -vserver | 	keyword -lxc -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ description="Mount the sys filesystem." | |||||||
|  |  | ||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	keyword -vserver | 	keyword -lxc -prefix -vserver | ||||||
| } | } | ||||||
|  |  | ||||||
| mount_sys() | mount_sys() | ||||||
| @@ -74,7 +74,6 @@ mount_misc() | |||||||
|  |  | ||||||
| mount_cgroups() | mount_cgroups() | ||||||
| { | { | ||||||
| 	yesno ${rc_cgroups:-YES} && [ -e /proc/cgroups ] && \ |  | ||||||
| 		mountinfo -q /sys/fs/cgroup || return 0 | 		mountinfo -q /sys/fs/cgroup || return 0 | ||||||
|  |  | ||||||
| 	local agent="@LIBEXECDIR@/sh/cgroup-release-agent.sh" | 	local agent="@LIBEXECDIR@/sh/cgroup-release-agent.sh" | ||||||
| @@ -83,6 +82,8 @@ mount_cgroups() | |||||||
| 		-o none,nodev,noexec,nosuid,name=openrc,release_agent="$agent" \ | 		-o none,nodev,noexec,nosuid,name=openrc,release_agent="$agent" \ | ||||||
| 		openrc /sys/fs/cgroup/openrc | 		openrc /sys/fs/cgroup/openrc | ||||||
| 	echo 1 > /sys/fs/cgroup/openrc/notify_on_release | 	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 | 	while read name hier groups enabled rest; do | ||||||
| 		case "${enabled}" in | 		case "${enabled}" in | ||||||
| 			1)	mkdir /sys/fs/cgroup/${name} | 			1)	mkdir /sys/fs/cgroup/${name} | ||||||
|   | |||||||
| @@ -16,4 +16,5 @@ depend() | |||||||
| 	use net newsyslog | 	use net newsyslog | ||||||
| 	need localmount | 	need localmount | ||||||
| 	after bootmisc | 	after bootmisc | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ ttyn=${rc_tty_number:-${RC_TTY_NUMBER:-12}} | |||||||
|  |  | ||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	keyword -lxc -openvz -uml -vserver -xenu | 	keyword -lxc -openvz -prefix -uml -vserver -xenu | ||||||
| 	use root | 	use root | ||||||
| 	after bootmisc | 	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() | depend() | ||||||
| { | { | ||||||
| 	after fsck | 	after fsck | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ description="Initializes the random number generator." | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
| 	keyword -jail -openvz | 	keyword -jail -lxc -openvz -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| save_seed() | save_seed() | ||||||
|   | |||||||
| @@ -5,6 +5,7 @@ | |||||||
| depend() | depend() | ||||||
| { | { | ||||||
| 	need localmount | 	need localmount | ||||||
|  | 	keyword -prefix | ||||||
| } | } | ||||||
|  |  | ||||||
| start() | start() | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ Show all runlevels and their services. | |||||||
| List all services that have crashed. | List all services that have crashed. | ||||||
| .It Fl l , -list | .It Fl l , -list | ||||||
| List all defined runlevels. | List all defined runlevels. | ||||||
| .It fl r , -runlevel | .It Fl r , -runlevel | ||||||
| Print the current runlevel name. | Print the current runlevel name. | ||||||
| .It Fl s , -servicelist | .It Fl s , -servicelist | ||||||
| Show all services. | Show all services. | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ | |||||||
| .Op Ar command ... | .Op Ar command ... | ||||||
| .Sh DESCRIPTION | .Sh DESCRIPTION | ||||||
| .Nm | .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. | 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 its multiplexed configuration | ||||||
| file, then its master configuration file, then | file, then its master configuration file, then | ||||||
| @@ -156,7 +156,7 @@ We provide this virtual service. For example, named provides dns. | |||||||
| .It Ic config | .It Ic config | ||||||
| We should recalculate our dependencies if the listed files have changed. | 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. These are the keywords we currently understand: | ||||||
| .Bl -tag -width indent | .Bl -tag -width indent | ||||||
| .It Dv -shutdown | .It Dv -shutdown | ||||||
| Don't stop this service when shutting the system down. | Don't stop this service when shutting the system down. | ||||||
| @@ -180,6 +180,8 @@ in | |||||||
| Same as -jail, but for Linux Resource Containers (LXC). | Same as -jail, but for Linux Resource Containers (LXC). | ||||||
| .It Dv -openvz | .It Dv -openvz | ||||||
| Same as -jail, but for OpenVZ systems. | Same as -jail, but for OpenVZ systems. | ||||||
|  | .It Dv -prefix | ||||||
|  | Same as -jail, but for Prefix systems. | ||||||
| .It Dv -uml | .It Dv -uml | ||||||
| Same as -jail, but for UML systems. | Same as -jail, but for UML systems. | ||||||
| .It Dv -vserver | .It Dv -vserver | ||||||
| @@ -350,8 +352,14 @@ Default runlevel chosen. Default is default. | |||||||
| .It Va RC_SYS | .It Va RC_SYS | ||||||
| A special variable to describe the system more. | A special variable to describe the system more. | ||||||
| Possible values are OPENVZ, XENU, XEN0, UML and VSERVER. | 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 | .It Va RC_UNAME | ||||||
| The result of `uname -s`. | 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 | .El | ||||||
| .Sh FILES | .Sh FILES | ||||||
| .Pp | .Pp | ||||||
| @@ -388,8 +396,9 @@ rc_provide_tap1="!net" | |||||||
| # To put in in /etc/rc.conf you would do it like this | # To put in in /etc/rc.conf you would do it like this | ||||||
| rc_net_tap1_provide="!net" | rc_net_tap1_provide="!net" | ||||||
|  |  | ||||||
| # It's also possible to negate keywords. | # It's also possible to negate keywords. This is mainly useful for prefix | ||||||
| rc_keyword="-keyword" | # users testing OpenRC. | ||||||
|  | rc_keyword="!-prefix" | ||||||
| .Ed | .Ed | ||||||
| .Sh EXAMPLES | .Sh EXAMPLES | ||||||
| .Pp | .Pp | ||||||
| @@ -438,8 +447,22 @@ depend() | |||||||
|     need ${_need} |     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() | 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 |     # Ensure that our dirs are correct | ||||||
|     checkpath --dir --owner foo:foo --mode 0664 \\ |     checkpath --dir --owner foo:foo --mode 0664 \\ | ||||||
| 	/var/run/foo /var/cache/foo | 	/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:= 		$(shell ${_OS_SH}) | ||||||
| OS?= 		${_OS} | OS?= 		${_OS} | ||||||
| include ${MK}/os-${OS}.mk | include ${MK}/os-${OS}.mk | ||||||
|  | include ${MK}/os-prefix.mk | ||||||
|  |  | ||||||
| RC_LIB=		/$(LIBNAME)/rc | RC_LIB=		/$(LIBNAME)/rc | ||||||
|   | |||||||
							
								
								
									
										11
									
								
								mk/sys.mk
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								mk/sys.mk
									
									
									
									
									
								
							| @@ -11,9 +11,14 @@ SED?=			sed | |||||||
| SH=			/bin/sh | SH=			/bin/sh | ||||||
|  |  | ||||||
| PREFIX?= | PREFIX?= | ||||||
| _UPREFIX_SH=		case "${PREFIX}" in "") echo /usr;; *) echo "${PREFIX}";; esac | ifeq (${PREFIX},) | ||||||
| _UPREFIX:=		$(shell ${_UPREFIX_SH}) | UPREFIX= /usr | ||||||
| UPREFIX=		${_UPREFIX} | else | ||||||
|  | UPREFIX= ${PREFIX} | ||||||
|  | ifeq (${MKPREFIX},yes) | ||||||
|  | UPREFIX= ${PREFIX}/usr | ||||||
|  | endif | ||||||
|  | endif | ||||||
| LOCAL_PREFIX=		/usr/local | LOCAL_PREFIX=		/usr/local | ||||||
|  |  | ||||||
| PICFLAG?=		-fPIC | PICFLAG?=		-fPIC | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ SRCS-Linux=	iwconfig.sh.in | |||||||
| INC-Linux=	adsl.sh apipa.sh arping.sh bonding.sh br2684ctl.sh bridge.sh \ | INC-Linux=	adsl.sh apipa.sh arping.sh bonding.sh br2684ctl.sh bridge.sh \ | ||||||
| 		ccwgroup.sh clip.sh ethtool.sh iproute2.sh ifplugd.sh ip6to4.sh \ | 		ccwgroup.sh clip.sh ethtool.sh iproute2.sh ifplugd.sh ip6to4.sh \ | ||||||
| 		ipppd.sh iwconfig.sh netplugd.sh pppd.sh pump.sh tuntap.sh udhcpc.sh \ | 		ipppd.sh iwconfig.sh netplugd.sh pppd.sh pump.sh tuntap.sh udhcpc.sh \ | ||||||
| 		vlan.sh macvlan.sh ip6rd.sh | 		vlan.sh macvlan.sh ip6rd.sh firewalld.sh | ||||||
|  |  | ||||||
| SRCS-NetBSD= | SRCS-NetBSD= | ||||||
| INC-NetBSD=	ifwatchd.sh | INC-NetBSD=	ifwatchd.sh | ||||||
|   | |||||||
| @@ -4,6 +4,12 @@ | |||||||
| bonding_depend() | bonding_depend() | ||||||
| { | { | ||||||
| 	before interface macchanger | 	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" | _config_vars="$_config_vars slaves" | ||||||
| @@ -23,6 +29,9 @@ bonding_pre_start() | |||||||
| 	eval primary="\$primary_${IFVAR}" | 	eval primary="\$primary_${IFVAR}" | ||||||
| 	unset primary_${IFVAR} | 	unset primary_${IFVAR} | ||||||
|  |  | ||||||
|  | 	eval subsume="\$subsume_${IFVAR}" | ||||||
|  | 	unset subsume_${IFVAR} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	[ -z "${slaves}" ] && return 0 | 	[ -z "${slaves}" ] && return 0 | ||||||
|  |  | ||||||
| @@ -34,6 +43,10 @@ bonding_pre_start() | |||||||
| 		fi | 		fi | ||||||
| 	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 | 	# We can create the interface name we like now, but this | ||||||
| 	# requires sysfs | 	# requires sysfs | ||||||
| 	if ! _exists && [ -d /sys/class/net ]; then | 	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 | 	# Configure the bond mode, then we can reloop to ensure we configure | ||||||
| 	# All other options | 	# 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 | 		[ -f "${x}" ] || continue | ||||||
| 		n=${x##*/} | 		n=${x##*/} | ||||||
| 		eval s=\$${n}_${IFVAR} | 		eval s=\$${n}_${IFVAR} | ||||||
| @@ -62,11 +86,11 @@ bonding_pre_start() | |||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
| 	# Nice and dynamic for remaining options:) | 	# 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 | 		[ -f "${x}" ] || continue | ||||||
| 		n=${x##*/} | 		n=${x##*/} | ||||||
| 		eval s=\$${n}_${IFVAR} | 		eval s=\$${n}_${IFVAR} | ||||||
| 		[ "${n}" != "mode" ] || continue | 		[ "${n}" != "mode" -o "${n}" != "miimon" ] || continue | ||||||
| 		if [ -n "${s}" ]; then | 		if [ -n "${s}" ]; then | ||||||
| 			einfo "Setting ${n}: ${s}" | 			einfo "Setting ${n}: ${s}" | ||||||
| 			echo "${s}" >"${x}" || \ | 			echo "${s}" >"${x}" || \ | ||||||
| @@ -84,15 +108,44 @@ bonding_pre_start() | |||||||
| 		_exists true || return 1 | 		_exists true || return 1 | ||||||
| 	done | 	done | ||||||
|  |  | ||||||
| 	# Must force the slaves to a particular state before adding them | 	# Unless we are subsuming an existing interface (NFS root), we down | ||||||
| 	for IFACE in ${slaves}; do | 	# slave interfaces to work around bugs supposedly in some chipsets | ||||||
| 		_delete_addresses | 	# that cause failure to enslave from other states. | ||||||
| 		_down | 	if [ -z "${subsume}" ]; then | ||||||
| 	done | 		for IFACE in ${slaves}; do | ||||||
|  | 			_delete_addresses | ||||||
|  | 			_down | ||||||
|  | 		done | ||||||
|  | 	fi | ||||||
| 	) | 	) | ||||||
|  |  | ||||||
| 	# now force the master to up | 	# Now force the master to up | ||||||
| 	_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 | 	# finally add in slaves | ||||||
| 	# things needed in the process, and if they are done by ifenslave, openrc, and/or the kernel. | 	# 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 | 			fi | ||||||
| 		done | 		done | ||||||
| 	else | 	else | ||||||
| 		/sbin/ifenslave "${IFACE}" ${slaves} >/dev/null | 		ifenslave "${IFACE}" ${slaves} >/dev/null | ||||||
| 	fi | 	fi | ||||||
| 	eend $? | 	eend $? | ||||||
|  |  | ||||||
| @@ -132,6 +185,11 @@ bonding_stop() | |||||||
| { | { | ||||||
| 	_is_bond || return 0 | 	_is_bond || return 0 | ||||||
|  |  | ||||||
|  | 	# Wipe subsumed interface | ||||||
|  | 	if [ -n "${subsume}" ]; then | ||||||
|  | 		ifconfig ${subsume} 0.0.0.0 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
| 	local slaves= s= | 	local slaves= s= | ||||||
| 	slaves=$( \ | 	slaves=$( \ | ||||||
| 		sed -n -e 's/^Slave Interface: //p' "/proc/net/bonding/${IFACE}" \ | 		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 | 			echo -"${s}" > /sys/class/net/"${IFACE}"/bonding/slaves | ||||||
| 		done | 		done | ||||||
| 	else | 	else | ||||||
| 		/sbin/ifenslave -d "${IFACE}" ${slaves} | 		ifenslave -d "${IFACE}" ${slaves} | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# reset all slaves | 	# reset all slaves | ||||||
|   | |||||||
| @@ -119,10 +119,8 @@ bridge_pre_start() | |||||||
| 				return 1 | 				return 1 | ||||||
| 			fi | 			fi | ||||||
| 			# The interface is known to exist now | 			# The interface is known to exist now | ||||||
| 			_set_flag promisc |  | ||||||
| 			_up | 			_up | ||||||
| 			if ! brctl addif "${BR_IFACE}" "${x}"; then | 			if ! brctl addif "${BR_IFACE}" "${x}"; then | ||||||
| 				_set_flag -promisc |  | ||||||
| 				eend 1 | 				eend 1 | ||||||
| 				return 1 | 				return 1 | ||||||
| 			fi | 			fi | ||||||
| @@ -144,6 +142,7 @@ bridge_pre_start() | |||||||
| 	) || return 1 | 	) || return 1 | ||||||
|  |  | ||||||
| 	# Bring up the bridge | 	# Bring up the bridge | ||||||
|  | 	_set_flag promisc | ||||||
| 	_up | 	_up | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										38
									
								
								net/firewalld.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								net/firewalld.sh
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | # Copyright (c) 2012 Doug Goldstein <cardoe@cardoe.com> | ||||||
|  | # Released under the 2-clause BSD license. | ||||||
|  |  | ||||||
|  | firewalld_depend() | ||||||
|  | { | ||||||
|  | 	after interface | ||||||
|  | 	before dhcp | ||||||
|  | 	program firewall-cmd | ||||||
|  | 	[ "$IFACE" != "lo" ] && need firewalld | ||||||
|  | } | ||||||
|  |  | ||||||
|  | _config_vars="$_config_vars firewalld_zone" | ||||||
|  |  | ||||||
|  | firewalld_post_start() | ||||||
|  | { | ||||||
|  | 	local firewalld_zone= | ||||||
|  | 	eval firewalld_zone=\$firewalld_zone_${IFVAR} | ||||||
|  |  | ||||||
|  | 	_exists || return 0 | ||||||
|  |  | ||||||
|  | 	if [ "${IFACE}" != "lo" ]; then | ||||||
|  | 		firewall-cmd --zone="${firewalld_zone}" \ | ||||||
|  | 			--change-interface="${IFACE}" > /dev/null 2>&1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | firewalld_pre_stop() | ||||||
|  | { | ||||||
|  | 	_exists || return 0 | ||||||
|  |  | ||||||
|  | 	if [ "${IFACE}" != "lo" ]; then | ||||||
|  | 		firewall-cmd --remove-interface="${IFACE}" > /dev/null 2>&1 | ||||||
|  | 	fi | ||||||
|  |  | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
| @@ -10,12 +10,12 @@ iproute2_depend() | |||||||
|  |  | ||||||
| _up() | _up() | ||||||
| { | { | ||||||
| 	ip link set "${IFACE}" up | 	ip link set dev "${IFACE}" up | ||||||
| } | } | ||||||
|  |  | ||||||
| _down() | _down() | ||||||
| { | { | ||||||
| 	ip link set "${IFACE}" down | 	ip link set dev "${IFACE}" down | ||||||
| } | } | ||||||
|  |  | ||||||
| _exists() | _exists() | ||||||
| @@ -57,7 +57,7 @@ _set_flag() | |||||||
| 		flag=${flag#-} | 		flag=${flag#-} | ||||||
| 		opt="off" | 		opt="off" | ||||||
| 	fi | 	fi | ||||||
| 	ip link set "${IFACE}" "${flag}" "${opt}" | 	ip link set dev "${IFACE}" "${flag}" "${opt}" | ||||||
| } | } | ||||||
|  |  | ||||||
| _get_mac_address() | _get_mac_address() | ||||||
| @@ -79,7 +79,7 @@ _get_mac_address() | |||||||
|  |  | ||||||
| _set_mac_address() | _set_mac_address() | ||||||
| { | { | ||||||
| 	ip link set "${IFACE}" address "$1" | 	ip link set dev "${IFACE}" address "$1" | ||||||
| } | } | ||||||
|  |  | ||||||
| _get_inet_addresses() | _get_inet_addresses() | ||||||
| @@ -212,7 +212,7 @@ _delete_addresses() | |||||||
|  |  | ||||||
| _has_carrier() | _has_carrier() | ||||||
| { | { | ||||||
| 	return 0 | 	LC_ALL=C ip link show dev "${IFACE}" | grep -q "LOWER_UP" | ||||||
| } | } | ||||||
|  |  | ||||||
| _tunnel() | _tunnel() | ||||||
| @@ -274,12 +274,12 @@ iproute2_pre_start() | |||||||
| 	# MTU support | 	# MTU support | ||||||
| 	local mtu= | 	local mtu= | ||||||
| 	eval mtu=\$mtu_${IFVAR} | 	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 | 	# TX Queue Length support | ||||||
| 	local len= | 	local len= | ||||||
| 	eval len=\$txqueuelen_${IFVAR} | 	eval len=\$txqueuelen_${IFVAR} | ||||||
| 	[ -n "${len}" ] && ip link set "${IFACE}" txqueuelen "${len}" | 	[ -n "${len}" ] && ip link set dev "${IFACE}" txqueuelen "${len}" | ||||||
|  |  | ||||||
| 	return 0 | 	return 0 | ||||||
| } | } | ||||||
| @@ -287,7 +287,7 @@ iproute2_pre_start() | |||||||
| _iproute2_ipv6_tentative() | _iproute2_ipv6_tentative() | ||||||
| { | { | ||||||
| 	# Only check tentative when we have a carrier. | 	# 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}" | \ | 	LC_ALL=C ip addr show dev "${IFACE}" | \ | ||||||
| 		grep -q "^[[:space:]]*inet6 .* tentative" | 		grep -q "^[[:space:]]*inet6 .* tentative" | ||||||
| } | } | ||||||
|   | |||||||
| @@ -61,12 +61,12 @@ udhcpc_start() | |||||||
| 	esac | 	esac | ||||||
|  |  | ||||||
| 	case " ${args} " in | 	case " ${args} " in | ||||||
| 		*" --hosname="*|*" -h "*|*" -H "*);; | 		*" --hostname="*|*" -h "*|*" -H "*);; | ||||||
| 		*) | 		*) | ||||||
| 			if ${sendhost}; then | 			if ${sendhost}; then | ||||||
| 				local hname="$(hostname)" | 				local hname="$(hostname)" | ||||||
| 				if [ "${hname}" != "(none)" ] && [ "${hname}" != "localhost" ]; then | 				if [ "${hname}" != "(none)" ] && [ "${hname}" != "localhost" ]; then | ||||||
| 					args="${args} --hostname='${hname}'" | 					args="${args} -x hostname:'${hname}'" | ||||||
| 				fi | 				fi | ||||||
| 			fi | 			fi | ||||||
| 			;; | 			;; | ||||||
|   | |||||||
							
								
								
									
										31
									
								
								net/vlan.sh
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								net/vlan.sh
									
									
									
									
									
								
							| @@ -66,26 +66,41 @@ vlan_post_start() | |||||||
| 		einfo "Adding VLAN ${vlan} to ${IFACE}" | 		einfo "Adding VLAN ${vlan} to ${IFACE}" | ||||||
| 		# We need to gather all interface configuration options | 		# We need to gather all interface configuration options | ||||||
| 		# 1) naming. Default to the standard "${IFACE}.${vlan}" but it can be anything | 		# 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}" | 		[ -z "${vname}" ] && vname="${IFACE}.${vlan}" | ||||||
| 		# 2) flags | 		# 2) flags | ||||||
| 		eval vflags=\$vlan${vlan}_flags | 		eval vflags=\$${IFACE}_vlan${vlan}_flags | ||||||
|  | 		[ -z "${vname}" ] && eval vflags=\$vlan${vlan}_flags | ||||||
| 		# 3) ingress/egress map | 		# 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}" | 		[ -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}" | 		[ -z "${vegress}" ] || vegress="egress-qos-map ${vegress}" | ||||||
|  |  | ||||||
|  | 		# txqueue | ||||||
| 		local txqueuelen= | 		local txqueuelen= | ||||||
| 		eval txqueuelen=\$txqueuelen_vlan${vlan} | 		eval txqueuelen=\$txqueuelen_${IFACE}_vlan${vlan} | ||||||
|  | 		[ -z "${txqueuelen}" ] && eval txqueuelen=\$txqueuelen_vlan${vlan} | ||||||
|  | 		# mac | ||||||
| 		local mac= | 		local mac= | ||||||
| 		eval mac=\$mac_vlan${vlan} | 		eval mac=\$mac_${IFACE}_vlan${vlan} | ||||||
|  | 		[ -z "${mac}" ] && eval mac=\$mac_vlan${vlan} | ||||||
|  | 		# broadcast | ||||||
| 		local broadcast= | 		local broadcast= | ||||||
| 		eval broadcast=\$broadcast_vlan${vlan} | 		eval broadcast=\$broadcast_${IFACE}_vlan${vlan} | ||||||
|  | 		[ -z "${broadcast}" ] && eval broadcast=\$broadcast_vlan${vlan} | ||||||
|  | 		# mtu | ||||||
| 		local 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}" | 		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)" | 		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 | 		if [ -n "${e}" ]; then | ||||||
| 			eend 1 "${e}" | 			eend 1 "${e}" | ||||||
|   | |||||||
| @@ -10,6 +10,12 @@ BOOTDIR=	${LEVELDIR}/boot | |||||||
| DEFAULTDIR=	${LEVELDIR}/default | DEFAULTDIR=	${LEVELDIR}/default | ||||||
| SHUTDOWNDIR=	${LEVELDIR}/shutdown | SHUTDOWNDIR=	${LEVELDIR}/shutdown | ||||||
|  |  | ||||||
|  | ifeq (${MKNET},) | ||||||
|  | BOOT+= network staticroute | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | INITFILES=	../init.d | ||||||
|  |  | ||||||
| MK=		../mk | MK=		../mk | ||||||
| include ${MK}/sys.mk | include ${MK}/sys.mk | ||||||
| include ${MK}/os.mk | include ${MK}/os.mk | ||||||
| @@ -19,19 +25,25 @@ BOOT-${OS}= | |||||||
| SHUTDOWN-${OS}= | SHUTDOWN-${OS}= | ||||||
| SYSINIT-${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 | BOOT-BSD=	hostid newsyslog savecore syslogd swap-blk | ||||||
|  |  | ||||||
| # Generic BSD stuff | # Generic BSD stuff | ||||||
| BOOT-FreeBSD=	hostid net.lo0 newsyslog savecore syslogd | BOOT-FreeBSD+=	hostid newsyslog savecore syslogd | ||||||
| # FreeBSD specific stuff | # FreeBSD specific stuff | ||||||
| BOOT-FreeBSD+=	adjkerntz dumpon syscons | 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 | SHUTDOWN-Linux=	killprocs mount-ro | ||||||
| SYSINIT-Linux=	devfs dmesg | SYSINIT-Linux=	devfs dmesg sysfs | ||||||
|  |  | ||||||
| # Generic BSD stuff | # Generic BSD stuff | ||||||
| BOOT-NetBSD=	hostid net.lo0 newsyslog savecore syslogd | BOOT-NetBSD+=	hostid newsyslog savecore syslogd | ||||||
| # NetBSD specific stuff | # NetBSD specific stuff | ||||||
| BOOT-NetBSD+=	devdb swap-blk ttys wscons | BOOT-NetBSD+=	devdb swap-blk ttys wscons | ||||||
|  |  | ||||||
| @@ -41,25 +53,35 @@ install: | |||||||
| 	if ! test -d "${SYSINITDIR}"; then \ | 	if ! test -d "${SYSINITDIR}"; then \ | ||||||
| 		${INSTALL} -d ${SYSINITDIR} || exit $$?; \ | 		${INSTALL} -d ${SYSINITDIR} || exit $$?; \ | ||||||
| 		for x in ${SYSINIT}; do \ | 		for x in ${SYSINIT}; do \ | ||||||
| 			ln -snf ${PREFIX}/etc/init.d/"$$x" ${SYSINITDIR}/"$$x" || exit $$?; \ | 			if test -n "${PREFIX}"; then \ | ||||||
| 		done \ | 				grep -q "keyword .*-prefix" ${INITFILES}/"$$x" && continue; \ | ||||||
|  | 			fi; \ | ||||||
|  | 			ln -snf ${INITDIR}/"$$x" ${SYSINITDIR}/"$$x" || exit $$?; done \ | ||||||
| 	fi | 	fi | ||||||
| 	if ! test -d "${BOOTDIR}"; then \ | 	if ! test -d "${BOOTDIR}"; then \ | ||||||
| 		${INSTALL} -d ${BOOTDIR} || exit $$?; \ | 		${INSTALL} -d ${BOOTDIR} || exit $$?; \ | ||||||
| 		for x in ${BOOT}; do \ | 		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 \ | 		done \ | ||||||
| 	fi | 	fi | ||||||
| 	if ! test -d "${DEFAULTDIR}"; then \ | 	if ! test -d "${DEFAULTDIR}"; then \ | ||||||
| 		${INSTALL} -d ${DEFAULTDIR} || exit $$?; \ | 		${INSTALL} -d ${DEFAULTDIR} || exit $$?; \ | ||||||
| 		for x in ${DEFAULT}; do \ | 		for x in ${DEFAULT}; do \ | ||||||
| 			ln -snf ${PREFIX}/etc/init.d/"$$x" ${DEFAULTDIR}/"$$x" || exit $$?; \ | 			if test -n "${PREFIX}"; then \ | ||||||
| 		done \ | 				grep -q "keyword .*-prefix" ${INITFILES}/"$$x" && continue; \ | ||||||
|  | 			fi; \ | ||||||
|  | 			ln -snf ${INITDIR}/"$$x" ${DEFAULTDIR}/"$$x" || exit $$?; done \ | ||||||
| 	fi | 	fi | ||||||
| 	if ! test -d "${SHUTDOWNDIR}"; then \ | 	if ! test -d "${SHUTDOWNDIR}"; then \ | ||||||
| 		${INSTALL} -d ${SHUTDOWNDIR} || exit $$?; \ | 		${INSTALL} -d ${SHUTDOWNDIR} || exit $$?; \ | ||||||
| 		for x in ${SHUTDOWN}; do \ | 		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 | 	fi | ||||||
|  |  | ||||||
| check test:: | check test:: | ||||||
|   | |||||||
| @@ -105,7 +105,7 @@ else | |||||||
| 	# the last ecmd | 	# the last ecmd | ||||||
| 	for _e in ebegin eend error errorn einfo einfon ewarn ewarnn ewend \ | 	for _e in ebegin eend error errorn einfo einfon ewarn ewarnn ewend \ | ||||||
| 		vebegin veend veinfo vewarn vewend; do | 		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; }" | 		export EINFO_LASTCMD=$_e; return \$_r; }" | ||||||
| 	done | 	done | ||||||
| 	unset _e | 	unset _e | ||||||
|   | |||||||
| @@ -37,14 +37,23 @@ fi | |||||||
|  |  | ||||||
| # /run is a new directory for storing volatile runtime data. | # /run is a new directory for storing volatile runtime data. | ||||||
| # Read more about /run at https://lwn.net/Articles/436012 | # Read more about /run at https://lwn.net/Articles/436012 | ||||||
|  | sys="$(rc --sys)" | ||||||
|  |  | ||||||
| if [ ! -d /run ]; then | if [ ! -d /run ]; then | ||||||
| 	eerror "The /run directory does not exist. Unable to continue." | 	if [ "$sys" = VSERVER ]; then | ||||||
| 	return 1 | 		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 | fi | ||||||
|  |  | ||||||
| if mountinfo -q /run; then | if [ "$sys" = VSERVER ]; then | ||||||
| 	einfo "/run is already mounted, skipping" | 	rm -rf /run/* | ||||||
| else | elif ! mountinfo -q /run; then | ||||||
| 	ebegin "Mounting /run" | 	ebegin "Mounting /run" | ||||||
| 	rc=0 | 	rc=0 | ||||||
| 	if ! fstabinfo --mount /run; then | 	if ! fstabinfo --mount /run; then | ||||||
|   | |||||||
| @@ -13,21 +13,29 @@ | |||||||
| # This script should match the manpage as of 2012/03/12 | # This script should match the manpage as of 2012/03/12 | ||||||
| # | # | ||||||
|  |  | ||||||
|  | DRYRUN=0 | ||||||
|  |  | ||||||
| warninvalid() { | warninvalid() { | ||||||
| 	printf "tmpfiles: ignoring invalid entry on line %d of \`%s'\n" "$LINENUM" "$FILE" | 	printf "tmpfiles: ignoring invalid entry on line %d of \`%s'\n" "$LINENUM" "$FILE" | ||||||
| 	error=$(( error+1 )) | 	error=$(( error+1 )) | ||||||
| } >&2 | } >&2 | ||||||
|  |  | ||||||
|  | dryrun_or_real() { | ||||||
|  | 	local dryrun= | ||||||
|  | 	[ $DRYRUN -eq 1 ] && dryrun=echo | ||||||
|  | 	$dryrun "$@" | ||||||
|  | } | ||||||
|  |  | ||||||
| relabel() { | relabel() { | ||||||
| 	local path | 	local path | ||||||
| 	local paths=$1 mode=$2 uid=$3 gid=$4 | 	local paths=$1 mode=$2 uid=$3 gid=$4 | ||||||
|  |  | ||||||
| 	for path in ${paths}; do | 	for path in ${paths}; do | ||||||
| 		if [ -e "$path" ]; then | 		if [ -e "$path" ]; then | ||||||
| 			[ $uid != '-' ] && chown $CHOPTS "$uid" "$path" | 			[ $uid != '-' ] && dryrun_or_real chown $CHOPTS "$uid" "$path" | ||||||
| 			[ $gid != '-' ] && chgrp $CHOPTS "$gid" "$path" | 			[ $gid != '-' ] && dryrun_or_real chgrp $CHOPTS "$gid" "$path" | ||||||
| 			[ $mode != '-' ] && chmod $CHOPTS "$mode" "$path" | 			[ $mode != '-' ] && dryrun_or_real chmod $CHOPTS "$mode" "$path" | ||||||
| 			[ -x /sbin/restorecon ] && restorecon $CHOPTS "$path" | 			[ -x /sbin/restorecon ] && dryrun_or_real restorecon $CHOPTS "$path" | ||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
| } | } | ||||||
| @@ -35,13 +43,13 @@ relabel() { | |||||||
| _b() { | _b() { | ||||||
| 	# Create a block device node if it doesn't exist yet | 	# Create a block device node if it doesn't exist yet | ||||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | 	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() { | _c() { | ||||||
| 	# Create a character device node if it doesn't exist yet | 	# Create a character device node if it doesn't exist yet | ||||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | 	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 | 	[ $CREATE -gt 0 ] || return 0 | ||||||
|  |  | ||||||
| 	if [ ! -e "$path" ]; then | 	if [ ! -e "$path" ]; then | ||||||
| 		install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | 		dryrun_or_real install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | ||||||
| 		[ -n "$arg" ] && _w "$@" | 		[ -z "$arg" ] || _w "$@" | ||||||
| 	fi | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -63,8 +71,8 @@ _F() { | |||||||
|  |  | ||||||
| 	[ $CREATE -gt 0 ] || return 0 | 	[ $CREATE -gt 0 ] || return 0 | ||||||
|  |  | ||||||
| 	install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | 	dryrun_or_real install -m"$mode" -o"$uid" -g"$gid" /dev/null "$path" | ||||||
| 	[ -n "$arg" ] && _w "$@" | 	[ -z "$arg" ] || _w "$@" | ||||||
| } | } | ||||||
|  |  | ||||||
| _d() { | _d() { | ||||||
| @@ -74,7 +82,7 @@ _d() { | |||||||
| 	[ $CREATE -gt 0 ] || return 0 | 	[ $CREATE -gt 0 ] || return 0 | ||||||
|  |  | ||||||
| 	if [ ! -d "$path" ]; then | 	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 | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -83,18 +91,18 @@ _D() { | |||||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 | 	local path=$1 mode=$2 uid=$3 gid=$4 | ||||||
|  |  | ||||||
| 	if [ -d "$path" ] && [ $REMOVE -gt 0 ]; then | 	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 | 	fi | ||||||
|  |  | ||||||
| 	if [ $CREATE -gt 0 ]; then | 	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 | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
| _L() { | _L() { | ||||||
| 	# Create a symlink if it doesn't exist yet | 	# Create a symlink if it doesn't exist yet | ||||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | 	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() { | _p() { | ||||||
| @@ -104,8 +112,8 @@ _p() { | |||||||
| 	[ $CREATE -gt 0 ] || return 0 | 	[ $CREATE -gt 0 ] || return 0 | ||||||
|  |  | ||||||
| 	if [ ! -p "$path" ]; then | 	if [ ! -p "$path" ]; then | ||||||
| 		mkfifo -m$mode "$path" | 		dryrun_or_real mkfifo -m$mode "$path" | ||||||
| 		chown "$uid:$gid" "$path" | 		dryrun_or_real chown "$uid:$gid" "$path" | ||||||
| 	fi | 	fi | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -129,9 +137,9 @@ _r() { | |||||||
|  |  | ||||||
| 	for path in ${paths}; do | 	for path in ${paths}; do | ||||||
| 		if [ -f "$path" ]; then | 		if [ -f "$path" ]; then | ||||||
| 			rm -f "$path" | 			dryrun_or_real rm -f "$path" | ||||||
| 		elif [ -d "$path" ]; then | 		elif [ -d "$path" ]; then | ||||||
| 			rmdir "$path" | 			dryrun_or_real rmdir "$path" | ||||||
| 		fi | 		fi | ||||||
| 	done | 	done | ||||||
| } | } | ||||||
| @@ -145,14 +153,20 @@ _R() { | |||||||
| 	[ $REMOVE -gt 0 ] || return 0 | 	[ $REMOVE -gt 0 ] || return 0 | ||||||
|  |  | ||||||
| 	for path in ${paths}; do | 	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 | 	done | ||||||
| } | } | ||||||
|  |  | ||||||
| _w() { | _w() { | ||||||
| 	# Write the argument parameter to a file, if it exists. | 	# Write the argument parameter to a file, if it exists. | ||||||
| 	local path=$1 mode=$2 uid=$3 gid=$4 age=$5 arg=$6 | 	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() { | _z() { | ||||||
| @@ -187,6 +201,7 @@ tmpfiles_d='' | |||||||
| # `/run/tmpfiles/foo.conf' will always be read after `/etc/tmpfiles.d/bar.conf' | # `/run/tmpfiles/foo.conf' will always be read after `/etc/tmpfiles.d/bar.conf' | ||||||
| for d in ${tmpfiles_dirs} ; do | for d in ${tmpfiles_dirs} ; do | ||||||
| 	[ -d $d ] && for f in ${d}/*.conf ; do | 	[ -d $d ] && for f in ${d}/*.conf ; do | ||||||
|  | 		[ "$f" = "$d/systemd.conf" ] && continue | ||||||
| 		[ -f $f ] && tmpfiles_basenames="${tmpfiles_basenames}\n${f##*/}" | 		[ -f $f ] && tmpfiles_basenames="${tmpfiles_basenames}\n${f##*/}" | ||||||
| 	done # for f in ${d} | 	done # for f in ${d} | ||||||
| done # for d in ${tmpfiles_dirs} | done # for d in ${tmpfiles_dirs} | ||||||
| @@ -212,7 +227,12 @@ while [ $# -gt 0 ]; do | |||||||
| 	shift | 	shift | ||||||
| done | done | ||||||
|  |  | ||||||
| if [ $(( CREATE + REMOVE )) -ne 1 ] ; then | if [ $(( CLEAN )) -eq 1 ] ; then | ||||||
|  | 	printf '%s clean mode is not implemented\n' "${0##*/}" | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [ "$CREATE$REMOVE" = '00' ]; then | ||||||
| 	printf 'usage: %s [--create] [--remove] [--clean] [--verbose] [--dry-run]\n' "${0##*/}" | 	printf 'usage: %s [--create] [--remove] [--clean] [--verbose] [--dry-run]\n' "${0##*/}" | ||||||
| 	exit 1 | 	exit 1 | ||||||
| fi | fi | ||||||
| @@ -233,51 +253,40 @@ for FILE in $tmpfiles_d ; do | |||||||
|  |  | ||||||
| 	# XXX: Upstream says whitespace is NOT permitted in the Path argument. | 	# 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. | 	# 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 )) | 		LINENUM=$(( LINENUM+1 )) | ||||||
|  |  | ||||||
| 		# This will skip over comments and empty lines |  | ||||||
| 		set -- $line |  | ||||||
|  |  | ||||||
| 		# Unless we have both command and path, skip this 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 | 			continue | ||||||
| 		fi | 		fi | ||||||
|  |  | ||||||
| 		# whine about invalid entries | 		# whine about invalid entries | ||||||
| 		case $1 in | 		case $cmd in | ||||||
| 			f|F|w|d|D|p|L|c|b|x|r|R|z|Z) ;; | 			f|F|w|d|D|p|L|c|b|x|r|R|z|Z) ;; | ||||||
|  | 			\#) continue ;; | ||||||
| 			*) warninvalid ; continue ;; | 			*) warninvalid ; continue ;; | ||||||
| 		esac | 		esac | ||||||
|  |  | ||||||
| 		cmd=$1 |  | ||||||
| 		path=$2 |  | ||||||
|  |  | ||||||
| 		# fall back on defaults when parameters are passed as '-' | 		# fall back on defaults when parameters are passed as '-' | ||||||
| 		if [ "$3" = '-' -o "$3" = '' ]; then | 		if [ "$mode" = '-' -o "$mode" = '' ]; then | ||||||
| 			case ${1} in | 			case "$cmd" in | ||||||
| 				p|f|F) mode=0644 ;; | 				p|f|F) mode=0644 ;; | ||||||
| 				d|D) mode=0755 ;; | 				d|D) mode=0755 ;; | ||||||
| 				z|Z|x|r|R|L) ;; | 				z|Z|x|r|R|L) ;; | ||||||
| 			esac | 			esac | ||||||
| 		else |  | ||||||
| 			mode=$3 |  | ||||||
| 		fi | 		fi | ||||||
| 		uid=$4 |  | ||||||
| 		gid=$5 |  | ||||||
| 		age=$6 |  | ||||||
| 		arg=$7 |  | ||||||
|  |  | ||||||
| 		[ ${4} = '-' ] && uid=0 | 		[ "$uid" = '-' -o "$uid" = '' ] && uid=0 | ||||||
| 		[ ${5} = '-' ] && gid=0 | 		[ "$gid" = '-' -o "$gid" = '' ] && gid=0 | ||||||
| 		[ ${6} = '-' ] && age=0 | 		[ "$age" = '-' -o "$age" = '' ] && age=0 | ||||||
| 		[ ${7} = '-' ] && arg='' | 		[ "$arg" = '-' -o "$arg" = '' ] && arg='' | ||||||
| 		set -- "$path" "$mode" "$uid" "$gid" "$age" "$arg" | 		set -- "$path" "$mode" "$uid" "$gid" "$age" "$arg" | ||||||
|  |  | ||||||
| 		[ "$VERBOSE" -eq "1" ] && echo _$cmd "$@" | 		[ "$VERBOSE" -eq "1" ] && echo _$cmd "$@" | ||||||
|  | 		_$cmd "$@" | ||||||
|  | 		rc=$? | ||||||
| 		if [ "${DRYRUN}" -eq "0" ]; then | 		if [ "${DRYRUN}" -eq "0" ]; then | ||||||
| 			_$cmd "$@" |  | ||||||
| 			rc=$? |  | ||||||
| 			[ $rc -ne 0 ] && error=$((error + 1)) | 			[ $rc -ne 0 ] && error=$((error + 1)) | ||||||
| 		fi | 		fi | ||||||
| 	done <$FILE | 	done <$FILE | ||||||
|   | |||||||
| @@ -28,6 +28,8 @@ | |||||||
|  * SUCH DAMAGE. |  * SUCH DAMAGE. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #include <sys/utsname.h> | ||||||
|  |  | ||||||
| #include "librc.h" | #include "librc.h" | ||||||
|  |  | ||||||
| #define GENDEP          RC_LIBEXECDIR "/sh/gendepends.sh" | #define GENDEP          RC_LIBEXECDIR "/sh/gendepends.sh" | ||||||
| @@ -747,12 +749,15 @@ rc_deptree_update(void) | |||||||
| 	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(); | ||||||
|  | 	struct utsname uts; | ||||||
|  |  | ||||||
| 	/* Some init scripts need RC_LIBEXECDIR to source stuff | 	/* Some init scripts need RC_LIBEXECDIR to source stuff | ||||||
| 	   Ideally we should be setting our full env instead */ | 	   Ideally we should be setting our full env instead */ | ||||||
| 	if (!getenv("RC_LIBEXECDIR")) | 	if (!getenv("RC_LIBEXECDIR")) | ||||||
| 		setenv("RC_LIBEXECDIR", RC_LIBEXECDIR, 0); | 		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 */ | 	/* Phase 1 - source all init scripts and print dependencies */ | ||||||
| 	if (!(fp = popen(GENDEP, "r"))) | 	if (!(fp = popen(GENDEP, "r"))) | ||||||
| 		return false; | 		return false; | ||||||
|   | |||||||
| @@ -216,6 +216,7 @@ rc_sys_v2(void) | |||||||
| 		} | 		} | ||||||
| 		/* Now do detection */ | 		/* Now do detection */ | ||||||
| 		__STRING_SWITCH(systype) | 		__STRING_SWITCH(systype) | ||||||
|  | 		__STRING_CASE(RC_SYS_PREFIX)	{ return RC_SYS_PREFIX; } | ||||||
| #ifdef __FreeBSD__ | #ifdef __FreeBSD__ | ||||||
| 		__STRING_CASE(RC_SYS_JAIL) { return RC_SYS_JAIL; } | 		__STRING_CASE(RC_SYS_JAIL) { return RC_SYS_JAIL; } | ||||||
| #endif /* __FreeBSD__ */ | #endif /* __FreeBSD__ */ | ||||||
| @@ -245,6 +246,10 @@ librc_hidden_def(rc_sys_v2) | |||||||
| const char * | const char * | ||||||
| rc_sys_v1(void) | rc_sys_v1(void) | ||||||
| { | { | ||||||
|  | #ifdef PREFIX | ||||||
|  | 	return RC_SYS_PREFIX; | ||||||
|  | #else | ||||||
|  |  | ||||||
| #ifdef __FreeBSD__ | #ifdef __FreeBSD__ | ||||||
| 	int jailed = 0; | 	int jailed = 0; | ||||||
| 	size_t len = sizeof(jailed); | 	size_t len = sizeof(jailed); | ||||||
| @@ -281,6 +286,7 @@ rc_sys_v1(void) | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| 	return NULL; | 	return NULL; | ||||||
|  | #endif /* PREFIX */ | ||||||
| } | } | ||||||
| librc_hidden_def(rc_sys_v1) | librc_hidden_def(rc_sys_v1) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -33,10 +33,13 @@ | |||||||
|  |  | ||||||
| __BEGIN_DECLS | __BEGIN_DECLS | ||||||
|  |  | ||||||
|  | #define RC_PREFIX "@PREFIX@" | ||||||
| #define RC_SYSCONFDIR		"@SYSCONFDIR@" | #define RC_SYSCONFDIR		"@SYSCONFDIR@" | ||||||
| #define RC_LIBDIR               "@PREFIX@/@LIB@/rc" | #define RC_LIBDIR               "@PREFIX@/@LIB@/rc" | ||||||
| #define RC_LIBEXECDIR           "@LIBEXECDIR@" | #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" | #define RC_SVCDIR               "@PREFIX@/run/openrc" | ||||||
| #else | #else | ||||||
| #define RC_SVCDIR               RC_LIBEXECDIR "/init.d" | #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_JAIL    "JAIL" | ||||||
| #define RC_SYS_OPENVZ  "OPENVZ" | #define RC_SYS_OPENVZ  "OPENVZ" | ||||||
| #define RC_SYS_LXC     "LXC" | #define RC_SYS_LXC     "LXC" | ||||||
|  | #define RC_SYS_PREFIX  "PREFIX" | ||||||
| #define RC_SYS_UML     "UML" | #define RC_SYS_UML     "UML" | ||||||
| #define RC_SYS_VSERVER "VSERVER" | #define RC_SYS_VSERVER "VSERVER" | ||||||
| #define RC_SYS_XEN0    "XEN0" | #define RC_SYS_XEN0    "XEN0" | ||||||
|   | |||||||
| @@ -38,7 +38,7 @@ | |||||||
| 	"Disable color output",						      \ | 	"Disable color output",						      \ | ||||||
| 	"Display software version",			              \ | 	"Display software version",			              \ | ||||||
| 	"Run verbosely",						      \ | 	"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_C  setenv ("EINFO_COLOR", "NO", 1); | ||||||
| #define case_RC_COMMON_getopt_case_h  usage (EXIT_SUCCESS); | #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 |  * See systemd's src/label.c:label_mkdir | ||||||
|  */ |  */ | ||||||
| static int | 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; | 	struct stat st; | ||||||
| 	int fd, flags; | 	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) { | 	if (mode && (st.st_mode & 0777) != mode) { | ||||||
| 		einfo("%s: correcting mode", applet); | 		einfo("%s: correcting mode", path); | ||||||
| 		if (chmod(path, mode)) { | 		if (chmod(path, mode)) { | ||||||
| 			eerror("%s: chmod: %s", applet, strerror(errno)); | 			eerror("%s: chmod: %s", applet, strerror(errno)); | ||||||
| 			return -1; | 			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) | 		if (st.st_dev || st.st_ino) | ||||||
| 			einfo("%s: correcting owner", path); | 			einfo("%s: correcting owner", path); | ||||||
| 		if (chown(path, uid, gid)) { | 		if (chown(path, uid, gid)) { | ||||||
| @@ -222,19 +223,20 @@ checkpath(int argc, char **argv) | |||||||
| 	struct group *gr = NULL; | 	struct group *gr = NULL; | ||||||
| 	inode_t type = inode_unknown; | 	inode_t type = inode_unknown; | ||||||
| 	int retval = EXIT_SUCCESS; | 	int retval = EXIT_SUCCESS; | ||||||
| 	bool trunc = 0; | 	bool trunc = false; | ||||||
|  | 	bool chowner = false; | ||||||
|  |  | ||||||
| 	while ((opt = getopt_long(argc, argv, getoptstring, | 	while ((opt = getopt_long(argc, argv, getoptstring, | ||||||
| 		    longopts, (int *) 0)) != -1) | 		    longopts, (int *) 0)) != -1) | ||||||
| 	{ | 	{ | ||||||
| 		switch (opt) { | 		switch (opt) { | ||||||
| 		case 'D': | 		case 'D': | ||||||
| 			trunc = 1; | 			trunc = true; | ||||||
| 		case 'd': | 		case 'd': | ||||||
| 			type = inode_dir; | 			type = inode_dir; | ||||||
| 			break; | 			break; | ||||||
| 		case 'F': | 		case 'F': | ||||||
| 			trunc = 1; | 			trunc = true; | ||||||
| 		case 'f': | 		case 'f': | ||||||
| 			type = inode_file; | 			type = inode_file; | ||||||
| 			break; | 			break; | ||||||
| @@ -247,6 +249,7 @@ checkpath(int argc, char **argv) | |||||||
| 				    applet, optarg); | 				    applet, optarg); | ||||||
| 			break; | 			break; | ||||||
| 		case 'o': | 		case 'o': | ||||||
|  | 			chowner = true; | ||||||
| 			if (parse_owner(&pw, &gr, optarg) != 0) | 			if (parse_owner(&pw, &gr, optarg) != 0) | ||||||
| 				eerrorx("%s: owner `%s' not found", | 				eerrorx("%s: owner `%s' not found", | ||||||
| 				    applet, optarg); | 				    applet, optarg); | ||||||
| @@ -272,7 +275,7 @@ checkpath(int argc, char **argv) | |||||||
| 		gid = gr->gr_gid; | 		gid = gr->gr_gid; | ||||||
|  |  | ||||||
| 	while (optind < argc) { | 	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; | 			retval = EXIT_FAILURE; | ||||||
| 		optind++; | 		optind++; | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -282,7 +282,7 @@ fstabinfo(int argc, char **argv) | |||||||
| 		END_ENT; | 		END_ENT; | ||||||
|  |  | ||||||
| 		if (!TAILQ_FIRST(files)) | 		if (!TAILQ_FIRST(files)) | ||||||
| 			eerrorx("%s: emtpy fstab", argv[0]); | 			eerrorx("%s: empty fstab", argv[0]); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (!TAILQ_FIRST(files)) { | 	if (!TAILQ_FIRST(files)) { | ||||||
|   | |||||||
| @@ -390,12 +390,8 @@ mountinfo(int argc, char **argv) | |||||||
| 	char real_path[PATH_MAX + 1]; | 	char real_path[PATH_MAX + 1]; | ||||||
| 	int opt; | 	int opt; | ||||||
| 	int result; | 	int result; | ||||||
| 	bool quiet; |  | ||||||
| 	char *this_path; | 	char *this_path; | ||||||
|  |  | ||||||
| 	/* Ensure that we are only quiet when explicitly told to be */ |  | ||||||
| 	unsetenv("EINFO_QUIET"); |  | ||||||
|  |  | ||||||
| #define DO_REG(_var)							      \ | #define DO_REG(_var)							      \ | ||||||
| 	if (_var) free(_var);						      \ | 	if (_var) free(_var);						      \ | ||||||
| 	_var = get_regex(optarg); | 	_var = get_regex(optarg); | ||||||
| @@ -475,7 +471,6 @@ mountinfo(int argc, char **argv) | |||||||
| 	REG_FREE(args.skip_options_regex); | 	REG_FREE(args.skip_options_regex); | ||||||
|  |  | ||||||
| 	result = EXIT_FAILURE; | 	result = EXIT_FAILURE; | ||||||
| 	quiet = rc_yesno(getenv("EINFO_QUIET")); |  | ||||||
|  |  | ||||||
| 	/* We should report the mounts in reverse order to ease unmounting */ | 	/* We should report the mounts in reverse order to ease unmounting */ | ||||||
| 	TAILQ_FOREACH_REVERSE(s, nodes, rc_stringlist, entries) { | 	TAILQ_FOREACH_REVERSE(s, nodes, rc_stringlist, entries) { | ||||||
| @@ -485,7 +480,7 @@ mountinfo(int argc, char **argv) | |||||||
| 		if (skip_point_regex && | 		if (skip_point_regex && | ||||||
| 		    regexec(skip_point_regex, s->value, 0, NULL, 0) == 0) | 		    regexec(skip_point_regex, s->value, 0, NULL, 0) == 0) | ||||||
| 			continue; | 			continue; | ||||||
| 		if (! quiet) | 		if (! rc_yesno(getenv("EINFO_QUIET"))) | ||||||
| 			printf("%s\n", s->value); | 			printf("%s\n", s->value); | ||||||
| 		result = EXIT_SUCCESS; | 		result = EXIT_SUCCESS; | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -191,6 +191,10 @@ env_config(void) | |||||||
| 	if (sys) | 	if (sys) | ||||||
| 		setenv("RC_SYS", sys, 1); | 		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 | 	/* Some scripts may need to take a different code path if | ||||||
| 	   Linux/FreeBSD, etc | 	   Linux/FreeBSD, etc | ||||||
| 	   To save on calling uname, we store it in an environment variable */ | 	   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 ((fp = fopen(pidfile, "r")) == NULL) { | ||||||
| 		if (!quiet) | 		if (!quiet) | ||||||
| 			eerror("%s: fopen `%s': %s", | 			eerror("%s: fopen `%s': %s", applet, pidfile, strerror(errno)); | ||||||
| 			    applet, pidfile, strerror(errno)); |  | ||||||
| 		return -1; | 		return -1; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -355,8 +354,7 @@ do_stop(const char *exec, const char *const *argv, | |||||||
| 	LIST_FOREACH_SAFE(pi, pids, entries, np) { | 	LIST_FOREACH_SAFE(pi, pids, entries, np) { | ||||||
| 		if (test) { | 		if (test) { | ||||||
| 			if (!quiet) | 			if (!quiet) | ||||||
| 				einfo("Would send signal %d to PID %d", | 				einfo("Would send signal %d to PID %d", sig, pi->pid); | ||||||
| 				    sig, pi->pid); |  | ||||||
| 			nkilled++; | 			nkilled++; | ||||||
| 		} else { | 		} else { | ||||||
| 			if (verbose) | 			if (verbose) | ||||||
| @@ -417,7 +415,7 @@ run_stop_schedule(const char *exec, const char *const *argv, | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (pidfile) { | 	if (pidfile) { | ||||||
| 		pid = get_pid(pidfile, quiet); | 		pid = get_pid(pidfile, false); | ||||||
| 		if (pid == -1) | 		if (pid == -1) | ||||||
| 			return 0; | 			return 0; | ||||||
| 	} | 	} | ||||||
| @@ -436,9 +434,7 @@ run_stop_schedule(const char *exec, const char *const *argv, | |||||||
| 				if (tkilled == 0) { | 				if (tkilled == 0) { | ||||||
| 					if (progressed) | 					if (progressed) | ||||||
| 						printf("\n"); | 						printf("\n"); | ||||||
| 					if (! quiet) | 						eerror("%s: no matching processes found", applet); | ||||||
| 						eerror("%s: no matching " |  | ||||||
| 						    "processes found", applet); |  | ||||||
| 				} | 				} | ||||||
| 				return tkilled; | 				return tkilled; | ||||||
| 			} | 			} | ||||||
| @@ -508,14 +504,10 @@ run_stop_schedule(const char *exec, const char *const *argv, | |||||||
|  |  | ||||||
| 	if (progressed) | 	if (progressed) | ||||||
| 		printf("\n"); | 		printf("\n"); | ||||||
| 	if (! quiet) { | 	if (nrunning == 1) | ||||||
| 		if (nrunning == 1) | 		eerror("%s: %d process refused to stop", applet, nrunning); | ||||||
| 			eerror("%s: %d process refused to stop", | 	else | ||||||
| 			    applet, nrunning); | 		eerror("%s: %d process(es) refused to stop", applet, nrunning); | ||||||
| 		else |  | ||||||
| 			eerror("%s: %d process(es) refused to stop", |  | ||||||
| 			    applet, nrunning); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return -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 */ | 		/* We don't redirect stdin as some daemons may need it */ | ||||||
| 		if (background || quiet || redirect_stdout) | 		if (background || quiet || redirect_stdout) | ||||||
| 			dup2(stdout_fd, STDOUT_FILENO); | 			dup2(stdout_fd, STDOUT_FILENO); | ||||||
| 		if (background || quiet || redirect_stderr) | 		if (background || redirect_stderr) | ||||||
| 			dup2(stderr_fd, STDERR_FILENO); | 			dup2(stderr_fd, STDERR_FILENO); | ||||||
|  |  | ||||||
| 		for (i = getdtablesize() - 1; i >= 3; --i) | 		for (i = getdtablesize() - 1; i >= 3; --i) | ||||||
| @@ -1326,12 +1318,9 @@ start_stop_daemon(int argc, char **argv) | |||||||
| 				return -1; | 				return -1; | ||||||
| 			} | 			} | ||||||
| 		} while (!WIFEXITED(i) && !WIFSIGNALED(i)); | 		} while (!WIFEXITED(i) && !WIFSIGNALED(i)); | ||||||
| 		if (!WIFEXITED(i) || WEXITSTATUS(i) != 0) { | 		if (!WIFEXITED(i) || WEXITSTATUS(i) != 0) | ||||||
| 			if (!quiet) | 			eerrorx("%s: failed to start `%s'", applet, exec); | ||||||
| 				eerrorx("%s: failed to start `%s'", |  | ||||||
| 				    applet, exec); |  | ||||||
| 			exit(EXIT_FAILURE); |  | ||||||
| 		} |  | ||||||
| 		pid = spid; | 		pid = spid; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -1365,7 +1354,7 @@ start_stop_daemon(int argc, char **argv) | |||||||
| 				alive = true; | 				alive = true; | ||||||
| 		} else { | 		} else { | ||||||
| 			if (pidfile) { | 			if (pidfile) { | ||||||
| 				pid = get_pid(pidfile, true); | 				pid = get_pid(pidfile, false); | ||||||
| 				if (pid == -1) { | 				if (pid == -1) { | ||||||
| 					eerrorx("%s: did not " | 					eerrorx("%s: did not " | ||||||
| 					    "create a valid" | 					    "create a valid" | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ l3:3:wait:/sbin/rc default | |||||||
| l4:4:wait:/sbin/rc default | l4:4:wait:/sbin/rc default | ||||||
| l5:5:wait:/sbin/rc default | l5:5:wait:/sbin/rc default | ||||||
| l6:6:wait:/sbin/rc reboot | l6:6:wait:/sbin/rc reboot | ||||||
| l6r:6:wait:/sbin/reboot -dk | l6r:6:wait:/sbin/reboot -d | ||||||
| #z6:6:respawn:/sbin/sulogin | #z6:6:respawn:/sbin/sulogin | ||||||
|  |  | ||||||
| # new-style single-user | # new-style single-user | ||||||
|   | |||||||
| @@ -9,10 +9,6 @@ srcdir=${srcdir:-.} | |||||||
| top_builddir=${top_builddir:-${top_srcdir}} | top_builddir=${top_builddir:-${top_srcdir}} | ||||||
| builddir=${builddir:-${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 | if [ ! -f ${top_srcdir}/sh/functions.sh ] ; then | ||||||
| 	echo "functions.sh not yet created !?" 1>&2 | 	echo "functions.sh not yet created !?" 1>&2 | ||||||
| 	exit 1 | 	exit 1 | ||||||
| @@ -21,6 +17,9 @@ elif ! . ${top_srcdir}/sh/functions.sh; then | |||||||
| 	exit 1 | 	exit 1 | ||||||
| fi | 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 | cd ${top_srcdir}/src/rc | ||||||
| ${MAKE:-make} links >/dev/null | ${MAKE:-make} links >/dev/null | ||||||
| cd - | cd - | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user