Compare commits
	
		
			69 Commits
		
	
	
		
			openrc-0.5
			...
			openrc-0.6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 18064e19f6 | ||
|   | cdf07b5970 | ||
|   | 82b265016a | ||
|   | bdfab242b7 | ||
|   | 4ca32808dd | ||
|   | 9e5b9abf40 | ||
|   | ac37dc2764 | ||
|   | 9285cb3392 | ||
|   | 6d9137d6c4 | ||
|   | 2fa6bb0d48 | ||
|   | 39776d6fb7 | ||
|   | 68c021c424 | ||
|   | 09bed967bf | ||
|   | 060b19e3e3 | ||
|   | d8a76d1bf6 | ||
|   | 7653ef89b8 | ||
|   | be6c0716ee | ||
|   | 4ea75dd1d6 | ||
|   | b708852784 | ||
|   | f700243016 | ||
|   | b232e529f1 | ||
|   | ae3186834f | ||
|   | 23546e27d9 | ||
|   | 1a188f8f72 | ||
|   | 89829f6d7c | ||
|   | 6e3b3bfc53 | ||
|   | 14c95ae9a6 | ||
|   | d3ccbdb5a9 | ||
|   | 1cdf85e1ce | ||
|   | 2982cfab70 | ||
|   | 761fe99fe2 | ||
|   | 6f24d1cbd8 | ||
|   | 898552dcc3 | ||
|   | 6850566be0 | ||
|   | 3036b44798 | ||
|   | acc0edb040 | ||
|   | 316a316d9b | ||
|   | 20b4076b12 | ||
|   | 4d86d34635 | ||
|   | ae7a92ae7b | ||
|   | 67b538fd26 | ||
|   | 0276c4f516 | ||
|   | 7271449a0c | ||
|   | 4b333eaf36 | ||
|   | 59b08643f1 | ||
|   | 5c52e5beb5 | ||
|   | c0f5f2122c | ||
|   | ecf9ef49a7 | ||
|   | bb45f0eabc | ||
|   | f434c902a5 | ||
|   | 5ec2efaff2 | ||
|   | 9ca65be42e | ||
|   | a704b97fd2 | ||
|   | 2c0a71172d | ||
|   | cbafcd078d | ||
|   | a165fbe384 | ||
|   | 02c12c1cac | ||
|   | 084f5e12eb | ||
|   | 3b9eaea8ec | ||
|   | dc3ccd8101 | ||
|   | 9476a2e721 | ||
|   | 1d174cc60c | ||
|   | 12af86395f | ||
|   | 5b3e5edda2 | ||
|   | 775d56b877 | ||
|   | 22e2a4f0a1 | ||
|   | ca752a5a2d | ||
|   | 93cecab1ed | ||
|   | baf3b2dd45 | 
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  | ||||
| include Makefile.inc | ||||
|  | ||||
| SUBDIR=		conf.d etc init.d man sh src | ||||
| SUBDIR=		conf.d etc init.d man scripts sh src | ||||
|  | ||||
| # Build our old net foo or not | ||||
| _OLDNET_SH=	case "${MKOLDNET}" in \ | ||||
|   | ||||
| @@ -1,3 +1,3 @@ | ||||
| NAME=		openrc | ||||
| VERSION=	0.5.3 | ||||
| VERSION=	0.6.6 | ||||
| PKG=		${NAME}-${VERSION} | ||||
|   | ||||
							
								
								
									
										7
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								README
									
									
									
									
									
								
							| @@ -41,7 +41,7 @@ If any of the following files exist then we do not overwrite them | ||||
| rc and rc.shutdown are the hooks from the BSD init into OpenRC. | ||||
| devd.conf is modified from FreeBSD to call /etc/rc.devd which is a generic | ||||
| hook into OpenRC. | ||||
| inittab is the same, but for SysVInit as used by most Linux distrubtions. | ||||
| inittab is the same, but for SysVInit as used by most Linux distributions. | ||||
| This can be found in the support folder. | ||||
| Obviously, if you're installing this onto a system that does not use OpenRC | ||||
| by default then you may wish to backup the above listed files, remove them | ||||
| @@ -58,14 +58,15 @@ If you installed OpenRC from your chosen distribution, you should report | ||||
| bugs directly to them. For example, if you use Gentoo and emerged OpenRC | ||||
| then you should reports bugs to http://bugs.gentoo.org. | ||||
|  | ||||
| Otherwise, you can report them directly to me at http://bugs.marples.name | ||||
| Otherwise, you can report them directly to me at | ||||
| http://roy.marples.name/projects/openrc | ||||
|  | ||||
|  | ||||
| History - by Roy Marples | ||||
| ------------------------ | ||||
| I became a Gentoo/Linux developer in 2004 and wrote the modular network | ||||
| scripts for the Gentoo baselayout package. baselayout is a collection of | ||||
| bash scripts to bring up your computer and it's services. | ||||
| bash scripts to bring up your computer and its services. | ||||
| Then towards the end of 2005 I found myself as the primary maintainer | ||||
| for baselayout. | ||||
|  | ||||
|   | ||||
| @@ -12,8 +12,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 confguration, including link setup. | ||||
| For dynmaic, static, IPv4LL, arping and per ssid IPv4 setup dhcpcd-5.x | ||||
| * 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 | ||||
| @@ -31,6 +31,6 @@ 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 publically available. | ||||
| 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. | ||||
|   | ||||
| @@ -11,9 +11,9 @@ include ${MK}/scripts.mk | ||||
|  | ||||
| SOS?=	BSD | ||||
|  | ||||
| network: network.in network.${OS} | ||||
| network: network.in network.${SOS} | ||||
| 	cp $@.in $@ | ||||
| 	[ -e $@.${OS} ] && cat $@.${OS} >> $@ || true | ||||
| 	[ -e $@.${SOS} ] && cat $@.${SOS} >> $@ || true | ||||
|  | ||||
| staticroute: staticroute.${SOS} | ||||
| 	cp $@.${SOS} $@ | ||||
|   | ||||
| @@ -1,3 +1 @@ | ||||
| CONF+=	ipfw moused powerd rarpd savecore syscons | ||||
|  | ||||
| network.${OS}: | ||||
|   | ||||
| @@ -1,3 +1 @@ | ||||
| CONF+=	moused rarpd savecore | ||||
|  | ||||
| network.${OS}: | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
| #fsck_passno="<2" | ||||
|  | ||||
| # Most modern fs's don't require a full fsck on boot, but for those that do | ||||
| # it may be adivisable to skip this when running on battery. | ||||
| # it may be advisable to skip this when running on battery. | ||||
| # WARNING: Do not turn this off if you have any JFS partitions. | ||||
| fsck_on_battery="YES" | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								conf.d/network.BSD
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								conf.d/network.BSD
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
|  | ||||
| # You can assign a default route | ||||
| #defaultroute="192.168.0.1" | ||||
| #defaultroute6="2001:a:b:c" | ||||
| @@ -1,8 +1,17 @@ | ||||
|  | ||||
| # You can assign a default route | ||||
| #defaultroute="gw 192.168.0.1" | ||||
| #defaultroute6="gw 2001:a:b:c" | ||||
|  | ||||
| # ifconfig under Linux is not that powerful and doesn't easily handle | ||||
| # multiple addresses | ||||
| # On the other hand, ip (iproute2) is quite powerful and is also supported | ||||
| #ip_eth0="192.168.0.10/24; 192.168.10.10/24" | ||||
|  | ||||
| # You can also use ip to add the default route. | ||||
| #defaultiproute="via 192.168.0.1" | ||||
| #defaultiproute6="via 2001:a:b:c" | ||||
|  | ||||
| # ip doesn't handle MTU like ifconfig, but we can do it like so | ||||
| #ifup_eth0="ip link set \$int mtu 1500" | ||||
|  | ||||
|   | ||||
| @@ -9,8 +9,6 @@ | ||||
| # You should note that we don't stop the network at system shutdown by default. | ||||
| # If you really need this, then set shutdown_network=YES | ||||
|  | ||||
| # You can assign a default route | ||||
| #defaultroute="192.168.0.1" | ||||
| # Lastly, the interfaces variable pulls in virtual interfaces that cannot | ||||
| # be automatically detected. | ||||
| #interfaces="br0 bond0 vlan0" | ||||
|   | ||||
| @@ -1,2 +1,6 @@ | ||||
| # Example static route. See route(8) for syntax. | ||||
| staticroute="net 192.168.0.0 -netmask 255.255.0.0 10.73.1.1" | ||||
| # Separate multiple routes using ; or new lines. | ||||
| # /etc/route.conf(5) takes precedence over this configuration. | ||||
|  | ||||
| # Example static routes. See route(8) for syntax. | ||||
| #staticroute="net 192.168.0.0 -netmask 255.255.255.0 10.73.1.1 | ||||
| #net 192.168.1.0 -netmask 255.255.255.0 10.73.1.1" | ||||
|   | ||||
| @@ -1,2 +1,8 @@ | ||||
| # Example static route. See route(8) for syntax. | ||||
| staticroute="net 192.168.0.0 netmask 255.255.0.0 gw 10.73.1.1" | ||||
| # Separate multiple routes using ; or new lines. | ||||
|  | ||||
| # Example static routes. See route(8) for syntax. | ||||
| #staticroute="net 192.168.0.0 netmask 255.255.255.0 gw 10.73.1.1 | ||||
| #net 192.168.1.0 netmask 255.255.255.0 gw 10.73.1.1" | ||||
|  | ||||
| # Example static routes using iproute2. See ip(8) for syntax. | ||||
| #staticiproute="192.168.0.0/24 via 10.73.1.1; 192.168.1.0/24 via 10.73.1.1" | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
| # kernel then remove the IPv6 address from your config. | ||||
|  | ||||
| # If you want to use a static address or use DHCP explicitly, jump | ||||
| # down to the section labelled INTERFACE HANDLERS. | ||||
| # down to the section labeled INTERFACE HANDLERS. | ||||
| # | ||||
| # If you want to do anything more fancy, you should take the time to | ||||
| # read through the rest of this file. | ||||
| @@ -22,10 +22,10 @@ | ||||
| # | ||||
| # We now support modular networking scripts which means we can easily | ||||
| # add support for new interface types and modules while keeping | ||||
| # compatability with existing ones. | ||||
| # compatibility with existing ones. | ||||
| #  | ||||
| # Modules load by default if the package they need is installed.  If | ||||
| # you specify a module here that doesn't have it's package installed | ||||
| # you specify a module here that doesn't have its package installed | ||||
| # then you get an error stating which package you need to install. | ||||
| # Ideally, you only use the modules setting when you have two or more | ||||
| # packages installed that supply the same service. | ||||
| @@ -43,11 +43,6 @@ | ||||
| #       (eth0:1, eth0:2, etc) | ||||
| #       iproute2 does not do this as there is no need to | ||||
| #config_eth0="192.168.0.2/24 192.168.0.3/24 192.168.0.4/24" | ||||
| # Or you can use sequence expressions | ||||
| #config_eth0="192.168.0.{2..4}/24"  FIXME - may not work with baselayout2 | ||||
| # which does the same as above. Be careful though as if you use this and | ||||
| # fallbacks, you have to ensure that both end up with the same number of | ||||
| # values otherwise your fallback won't work correctly. | ||||
|  | ||||
| # You can also use IPv6 addresses | ||||
| # (you should always specify a prefix length with IPv6 here) | ||||
| @@ -101,8 +96,8 @@ | ||||
| #modules="iwconfig" | ||||
|  | ||||
| # ifconfig (iwconig) support is a one shot script - wpa_supplicant is daemon | ||||
| # that scans, assoicates and re-configures if assocation is lost. | ||||
| # We call it iwconfig to seperate the wireless setup from ifconfig. | ||||
| # that scans, associates and re-configures if association is lost. | ||||
| # We call it iwconfig to separate the wireless setup from ifconfig. | ||||
| #################################### | ||||
| # HINTS | ||||
| # | ||||
| @@ -187,7 +182,7 @@ | ||||
| #dns_servers_001122334455="192.168.0.1 192.168.0.2" | ||||
|  | ||||
| # Map a MAC address to an SSID | ||||
| # This is used when the Access Point is not broadcasting it's SSID | ||||
| # This is used when the Access Point is not broadcasting its SSID | ||||
| # WARNING: This will override the SSID being broadcast due to some | ||||
| # Access Points sending an SSID even when they have been configured | ||||
| # not to! | ||||
| @@ -198,7 +193,7 @@ | ||||
| # This lists the preferred SSIDs to connect to in order | ||||
| # SSID's can contain any characters here as they must match the broadcast | ||||
| # SSID exactly. | ||||
| # Surround each SSID with the " character and seperate them with a space | ||||
| # Surround each SSID with the " character and separate them with a space | ||||
| # If the first SSID isn't found then it moves onto the next | ||||
| # If this isn't defined then it connects to the first one found | ||||
| #preferred_aps="SSID1 SSID2" | ||||
| @@ -213,9 +208,9 @@ | ||||
| # any other available AP | ||||
| # "preferredonly" means it will only connect to visible APs in the preferred | ||||
| # list | ||||
| # "forcepreferred" means it will forceably connect to APs in order if it does | ||||
| # "forcepreferred" means it will forcibly connect to APs in order if it does | ||||
| # not find them in a scan | ||||
| # "forcepreferredonly" means it forceably connects to the APs in order and | ||||
| # "forcepreferredonly" means it forcibly connects to the APs in order and | ||||
| # does not bother to scan | ||||
| # "forceany" does the same as forcepreferred + connects to any other  | ||||
| # available AP | ||||
| @@ -242,12 +237,12 @@ | ||||
|  | ||||
| ################################################## | ||||
| # wpa_supplicant | ||||
| # emerge net-wireless/wpa-supplicant | ||||
| # emerge net-wireless/wpa_supplicant | ||||
| # Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf | ||||
| # Console the wpa_supplicant.conf.example that is installed in | ||||
| # Consult the wpa_supplicant.conf.example that is installed in | ||||
| # /usr/share/doc/wpa_supplicant | ||||
|  | ||||
| # By default we don't wait for wpa_suppliant to associate and authenticate. | ||||
| # By default we don't wait for wpa_supplicant to associate and authenticate. | ||||
| # If you would like to, so can specify how long in seconds | ||||
| #associate_timeout_eth0=60 | ||||
| # A value of 0 means wait forever. | ||||
| @@ -325,7 +320,7 @@ | ||||
| # Set generic DHCP options like so | ||||
| #dhcp_eth0="release nodns nontp nonis nogateway nosendhost" | ||||
|  | ||||
| # This tells the dhcp client to release it's lease when it stops, not to | ||||
| # This tells the dhcp client to release its lease when it stops, not to | ||||
| # overwrite dns, ntp and nis settings, not to set a default route and not to | ||||
| # send the current hostname to the dhcp server and when it starts. | ||||
| # You can use any combination of the above options - the default is not to | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
| # kernel then remove the IPv6 address from your config. | ||||
|  | ||||
| # If you want to use a static address or use DHCP explicitly, jump | ||||
| # down to the section labelled INTERFACE HANDLERS. | ||||
| # down to the section labeled INTERFACE HANDLERS. | ||||
| # | ||||
| # If you want to do anything more fancy, you should take the time to | ||||
| # read through the rest of this file. | ||||
| @@ -23,10 +23,10 @@ | ||||
| # | ||||
| # We now support modular networking scripts which means we can easily | ||||
| # add support for new interface types and modules while keeping | ||||
| # compatability with existing ones. | ||||
| # compatibility with existing ones. | ||||
| #  | ||||
| # Modules load by default if the package they need is installed.  If | ||||
| # you specify a module here that doesn't have it's package installed | ||||
| # you specify a module here that doesn't have its package installed | ||||
| # then you get an error stating which package you need to install. | ||||
| # Ideally, you only use the modules setting when you have two or more | ||||
| # packages installed that supply the same service. | ||||
| @@ -70,11 +70,6 @@ | ||||
| #       iproute2 does not do this as there is no need to | ||||
| #config_eth0="192.168.0.2/24 192.168.0.3/24 192.168.0.4/24" | ||||
| # However, that only works with CIDR addresses, so you can't use netmask. | ||||
| # Or you can use sequence expressions | ||||
| #config_eth0="192.168.0.{2..4}/24" | ||||
| # which does the same as above. Be careful though as if you use this and | ||||
| # fallbacks, you have to ensure that both end up with the same number of | ||||
| # values otherwise your fallback won't work correctly. | ||||
|  | ||||
| # You can also use IPv6 addresses | ||||
| # (you should always specify a prefix length with IPv6 here) | ||||
| @@ -111,7 +106,7 @@ | ||||
|  | ||||
| # Each module described below can set a default base metric, lower is | ||||
| # preferred over higher. This is so we can prefer a wired route over a | ||||
| # wireless route automaticaly. You can override this by setting | ||||
| # wireless route automatically. You can override this by setting | ||||
| #metric_eth0="100" | ||||
| # or on a global basis | ||||
| #metric="100" | ||||
| @@ -258,7 +253,7 @@ | ||||
| #key_SSID="s:foobar enc open" | ||||
| #key_SSID="1234-5678-9012 enc open" | ||||
|  | ||||
| # You may want to set muliple keys - here's an example | ||||
| # You may want to set multiple keys - here's an example | ||||
| # It sets 4 keys on the card and instructs to use key 2 by default | ||||
| #key_SSID="[1] s:passkey1 key [2] s:passkey2 key [3] s:passkey3 key [4] s:passkey4 key [2]" | ||||
|  | ||||
| @@ -288,7 +283,7 @@ | ||||
| #dns_servers_001122334455="192.168.0.1 192.168.0.2" | ||||
|  | ||||
| # Map a MAC address to an SSID | ||||
| # This is used when the Access Point is not broadcasting it's SSID | ||||
| # This is used when the Access Point is not broadcasting its SSID | ||||
| # WARNING: This will override the SSID being broadcast due to some | ||||
| # Access Points sending an SSID even when they have been configured | ||||
| # not to! | ||||
| @@ -299,7 +294,7 @@ | ||||
| # This lists the preferred SSIDs to connect to in order | ||||
| # SSID's can contain any characters here as they must match the broadcast | ||||
| # SSID exactly. | ||||
| # Surround each SSID with the " character and seperate them with a space | ||||
| # Surround each SSID with the " character and separate them with a space | ||||
| # If the first SSID isn't found then it moves onto the next | ||||
| # If this isn't defined then it connects to the first one found | ||||
| #preferred_aps="SSID1 SSID2"  | ||||
| @@ -312,9 +307,9 @@ | ||||
| # "any" means it will connect to visible APs in the preferred list and then any | ||||
| # other available AP | ||||
| # "preferredonly" means it will only connect to visible APs in the preferred list | ||||
| # "forcepreferred" means it will forceably connect to APs in order if it does not find | ||||
| # "forcepreferred" means it will forcibly connect to APs in order if it does not find | ||||
| # them in a scan | ||||
| # "forcepreferredonly" means it forceably connects to the APs in order and does not bother | ||||
| # "forcepreferredonly" means it forcibly connects to the APs in order and does not bother | ||||
| # to scan | ||||
| # "forceany" does the same as forcepreferred + connects to any other available AP | ||||
| # Default is "any" | ||||
| @@ -341,16 +336,16 @@ | ||||
|  | ||||
| ############################################################ | ||||
| # wpa_supplicant | ||||
| # emerge net-wireless/wpa-supplicant | ||||
| # emerge net-wireless/wpa_supplicant | ||||
| # Wireless options are held in /etc/wpa_supplicant/wpa_supplicant.conf | ||||
| # Console the wpa_supplicant.conf.example that is installed in | ||||
| # Consult the wpa_supplicant.conf.example that is installed in | ||||
| # /usr/share/doc/wpa_supplicant | ||||
| # To configure wpa_supplicant | ||||
| #wpa_supplicant_ath0="-Dmadwifi" # For Atheros based cards | ||||
| # Consult wpa_supplicant for more drivers - the default is -Dwext which should | ||||
| # work for most cards. | ||||
|  | ||||
| # By default we don't wait for wpa_suppliant to associate and authenticate. | ||||
| # By default we don't wait for wpa_supplicant to associate and authenticate. | ||||
| # If you need to change this behaviour then you don't know how our scripts work | ||||
| # and setting this value could cause strange things to happen. | ||||
| # If you would like to, so can specify how long in seconds. | ||||
| @@ -453,7 +448,7 @@ | ||||
| # Set generic DHCP options like so | ||||
| #dhcp_eth0="release nodns nontp nonis nogateway nosendhost" | ||||
|  | ||||
| # This tells the dhcp client to release it's lease when it stops, not to | ||||
| # This tells the dhcp client to release its lease when it stops, not to | ||||
| # overwrite dns, ntp and nis settings, not to set a default route and not to | ||||
| # send the current hostname to the dhcp server and when it starts. | ||||
| # You can use any combination of the above options - the default is not to | ||||
| @@ -577,7 +572,7 @@ | ||||
| #config_bond0="null" # You may not want to assign an IP the the bond | ||||
|  | ||||
| # You can also configure the bond here, which must be done via sysfs on 2.6 | ||||
| # kernels or newer. See the kernel bonding documention for a description of | ||||
| # kernels or newer. See the kernel bonding documentation for a description of | ||||
| # these options. | ||||
| #arp_ip_target_bond0="+26.0.0.0" | ||||
|  | ||||
| @@ -663,7 +658,7 @@ | ||||
| # | ||||
| # Dead peer detection | ||||
| #	lcp-echo-interval 15	# Send a LCP echo every 15 seconds | ||||
| #	lcp-echo-failure 3	# Make peer dead after 3 consective | ||||
| #	lcp-echo-failure 3	# Make peer dead after 3 consecutive | ||||
| #				# echo-requests | ||||
| #	 | ||||
| # Compression options - use these to completely disable compression | ||||
| @@ -827,8 +822,8 @@ | ||||
| #config_nas0="'192.168.0.1/24'" | ||||
|  | ||||
| #----------------------------------------------------------------------------- | ||||
| # Tunnelling | ||||
| # WARNING: For tunnelling it is highly recommended that you | ||||
| # Tunneling | ||||
| # WARNING: For tunneling it is highly recommended that you | ||||
| # emerge sys-apps/iproute2 | ||||
| # | ||||
| # For GRE tunnels | ||||
| @@ -843,7 +838,7 @@ | ||||
|  | ||||
| # 6to4 Tunnels allow IPv6 to work over IPv4 addresses, provided you | ||||
| # have a non-private address configured on an interface. | ||||
| # link_6to4="eth0"		# Interface to base it's addresses on | ||||
| # link_6to4="eth0"		# Interface to base its addresses on | ||||
| # config_6to4="ip6to4" | ||||
| # You may want to depend on eth0 like so | ||||
| #rc_need_6to4="net.eth0" | ||||
| @@ -853,7 +848,7 @@ | ||||
| # sit0 - otherwise use a different name like 6to4 in the example above. | ||||
|  | ||||
| # You can also specify a relay and suffix if you like. | ||||
| # The default relay is 192.88.99.1 and the defualt suffix is :1 | ||||
| # The default relay is 192.88.99.1 and the default suffix is :1 | ||||
| #relay_6to4="192.168.3.2" | ||||
| #suffix_6to4=":ff" | ||||
|  | ||||
| @@ -901,7 +896,7 @@ | ||||
| # and you're done :) | ||||
|  | ||||
| # By default we don't wait for netplug/ifplugd to configure the interface. | ||||
| # If you would like it to wait so that other services now that network is up | ||||
| # If you would like it to wait so that other services know that network is up | ||||
| # then you can specify a timeout here. | ||||
| #plug_timeout="10" | ||||
| # A value of 0 means wait forever. | ||||
| @@ -941,8 +936,8 @@ | ||||
|  | ||||
| #preup() { | ||||
| #	# Test for link on the interface prior to bringing it up.  This | ||||
| #	# only works on some network adapters and requires the mii-diag | ||||
| #	# package to be installed. | ||||
| #	# only works on some network adapters and requires the | ||||
| #	# sys-apps/net-tools package to be installed. | ||||
| #	if mii-tool "${IFACE}" 2> /dev/null | grep -q 'no link'; then | ||||
| #		ewarn "No link on ${IFACE}, aborting configuration" | ||||
| #		return 1 | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| # Set to "YES" if you want the rc system to try and start services | ||||
| # in parallel for a slight speed improvement. When running in parallel we | ||||
| # prefix the service output with it's name as the output will get | ||||
| # prefix the service output with its name as the output will get | ||||
| # jumbled up. | ||||
| # WARNING: whilst we have improved parallel, it can still potentially lock | ||||
| # the boot process. Don't file bugs about this unless you can supply | ||||
| @@ -11,7 +11,8 @@ | ||||
|  | ||||
| # Set rc_interactive to "YES" and you'll be able to press the I key during | ||||
| # boot so you can choose to start specific services. Set to "NO" to disable | ||||
| # this feature. | ||||
| # this feature. This feature is automatically disabled if rc_parallel is | ||||
| # set to YES. | ||||
| #rc_interactive="YES" | ||||
|  | ||||
| # If we need to drop to a shell, you can specify it here. | ||||
| @@ -75,8 +76,14 @@ | ||||
| # Set unicode to YES to turn on unicode support for keyboards and screens. | ||||
| #unicode="NO" | ||||
|  | ||||
| # Network fstypes. Below is the default. | ||||
| net_fs_list="afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs nfs nfs4 ocfs2 shfs smbfs" | ||||
| # Below is the default list of network fstypes. | ||||
| # | ||||
| # afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre ncpfs | ||||
| # nfs nfs4 ocfs2 shfs smbfs | ||||
| # | ||||
| # If you would like to add to this list, you can do so by adding your | ||||
| # own fstypes to the following variable. | ||||
| #extra_net_fs_list="" | ||||
|  | ||||
| ############################################################################## | ||||
| # SERVICE CONFIGURATION VARIABLES | ||||
|   | ||||
| @@ -4,7 +4,6 @@ | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	use hostname | ||||
| 	need localmount | ||||
| 	before logger | ||||
| 	after clock sysctl | ||||
| @@ -36,6 +35,12 @@ cleanup_tmp_dir() | ||||
| 		# Faster than find | ||||
| 		rm -rf -- [^ajlq\.]* | ||||
|  | ||||
| 		# pam_mktemp creates a .private directory within which | ||||
| 		# each user gets a private directory with immutable | ||||
| 		# bit set; remove the immutable bit before trying to | ||||
| 		# remove it. | ||||
| 		[ -d /tmp/.private ] && chattr -R -a /tmp/.private 2> /dev/null | ||||
|  | ||||
| 		find $startopts ! -name . \ | ||||
| 			! -path "./lost+found" \ | ||||
| 			! -path "./lost+found/*" \ | ||||
| @@ -49,8 +54,6 @@ cleanup_tmp_dir() | ||||
| 			! -path "./aquota.group/*" \ | ||||
| 			! -path "./journal" \ | ||||
| 			! -path "./journal/*" \ | ||||
| 			! -path "./.private" \ | ||||
| 			! -path "./.private/*" \ | ||||
| 			-exec rm -rf {} \; | ||||
| 		eend 0 | ||||
| 	else | ||||
|   | ||||
| @@ -8,7 +8,7 @@ depend() | ||||
| { | ||||
| 	need localmount termencoding | ||||
| 	after hotplug bootmisc | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -30,38 +30,6 @@ _forcefsck() | ||||
| 	[ -e /forcefsck ] || get_bootparam forcefsck | ||||
| } | ||||
|  | ||||
| _on_ac_power() | ||||
| { | ||||
| 	if [ -f /proc/acpi/ac_adapter/AC*/state ]; then | ||||
| 		cat /proc/acpi/ac_adapter/AC*/state | while read line; do | ||||
| 			case "$line" in | ||||
| 			"state:"*"off-line") return 128;; | ||||
| 			esac | ||||
| 		done | ||||
| 	elif [ -f /proc/pmu/info ]; then | ||||
| 		cat /proc/pmu/info | while read line; do | ||||
| 			case "$line" in | ||||
| 			"AC Power"*": 0") return 128;; | ||||
| 			esac | ||||
| 		done | ||||
| 	elif type envstat >/dev/null 2>&1; then | ||||
| 		# NetBSD has envstat | ||||
| 		envstat -d acpiacad0 2>/dev/null | while read line; do | ||||
| 			case "$line" in | ||||
| 			"connected:"*"OFF") return 128;; | ||||
| 			esac | ||||
| 		done | ||||
| 	elif sysctl -q hw.acpi.acline >/dev/null 2>/dev/null; then | ||||
| 		case $(sysctl -n hw.acpi.acline) in | ||||
| 		0) return 1;; | ||||
| 		*) return 0;; | ||||
| 		esac | ||||
| 	else | ||||
| 		return 0 | ||||
| 	fi | ||||
| 	[ $? != 128 ] | ||||
| } | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	local fsck_opts= p= check_extra= | ||||
| @@ -73,7 +41,7 @@ start() | ||||
| 	if _forcefsck; then | ||||
| 		fsck_opts="$fsck_opts -f" | ||||
| 		check_extra="(check forced)" | ||||
| 	elif ! yesno ${fsck_on_battery:-YES} && ! _on_ac_power; then | ||||
| 	elif ! yesno ${fsck_on_battery:-YES} && ! on_ac_power; then | ||||
| 		ewarn "Skipping fsck due to not being on AC power" | ||||
| 		return 0 | ||||
| 	fi | ||||
|   | ||||
| @@ -8,7 +8,7 @@ depend() | ||||
| { | ||||
| 	need localmount termencoding | ||||
| 	after bootmisc | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu | ||||
| 	keyword -openvz -prefix -uml -vserver -xenu -lxc | ||||
| } | ||||
|  | ||||
| start() | ||||
|   | ||||
| @@ -18,11 +18,6 @@ start() | ||||
| 		local_start | ||||
| 	fi | ||||
|  | ||||
| 	# Support old configs | ||||
| 	if [ -e @SYSCONFDIR@/conf.d/local.start ]; then | ||||
| 		. @SYSCONFDIR@/conf.d/local.start | ||||
| 	fi | ||||
|  | ||||
| 	eend $? "Failed to start local" | ||||
| } | ||||
|  | ||||
| @@ -34,10 +29,5 @@ stop() | ||||
| 		local_stop | ||||
| 	fi | ||||
|  | ||||
| 	# Support old configs | ||||
| 	if [ -e @SYSCONFDIR@/conf.d/local.stop ]; then | ||||
| 		. @SYSCONFDIR@/conf.d/local.stop | ||||
| 	fi | ||||
|  | ||||
| 	eend $? "Failed to stop local" | ||||
| } | ||||
|   | ||||
| @@ -14,13 +14,16 @@ depend() | ||||
| start() | ||||
| { | ||||
| 	# Mount local filesystems in /etc/fstab. | ||||
| 	local types="noproc" x= | ||||
| 	local types="noproc" x= no_netdev= | ||||
| 	for x in $net_fs_list; do | ||||
| 		types="${types},${x}" | ||||
| 	done | ||||
|  | ||||
| 	if [ "$RC_UNAME" = Linux ]; then | ||||
| 		no_netdev="-O no_netdev" | ||||
| 	fi | ||||
| 	ebegin "Mounting local filesystems" | ||||
| 	mount -at "$types" | ||||
| 	mount -at "$types" $no_netdev | ||||
| 	eend $? "Some local filesystem failed to mount" | ||||
|  | ||||
| 	# Always return 0 - some local mounts may not be critical for boot | ||||
|   | ||||
| @@ -57,6 +57,32 @@ sys_interfaces() | ||||
| 	esac | ||||
| } | ||||
|  | ||||
| tentative() | ||||
| { | ||||
| 	local inet= address= rest= | ||||
|  | ||||
| 	case "$RC_UNAME" in | ||||
| 	Linux) | ||||
| 		[ -x /sbin/ip ] || [ -x /bin/ip ] || return 1 | ||||
| 		[ -n "$(ip -f inet6 addr show tentative)" ] | ||||
| 		;; | ||||
| 	*) | ||||
| 		local inet= address= rest= | ||||
| 		LC_ALL=C ifconfig -a | while read inet address rest; do | ||||
| 	 		case "${inet}" in | ||||
| 			inet6) | ||||
| 				case "${rest}" in | ||||
| 				*" "tentative*) return 2;; | ||||
| 				esac | ||||
| 				;; | ||||
| 			esac | ||||
| 		done | ||||
| 		[ $? = 2 ] | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
|  | ||||
|  | ||||
| auto_interfaces() | ||||
| { | ||||
| 	local ifs= c= f= | ||||
| @@ -112,6 +138,7 @@ runip() | ||||
| 	# Ensure we have a valid broadcast address | ||||
| 	case "$@" in | ||||
| 	*" broadcast "*|*" brd "*) ;; | ||||
| 	*:*) ;; # Ignore IPv6 | ||||
| 	*) set -- "$@" brd +;; | ||||
| 	esac | ||||
|  | ||||
| @@ -134,8 +161,9 @@ runip() | ||||
| routeflush() | ||||
| { | ||||
| 	if [ "$RC_UNAME" = Linux ]; then | ||||
| 		if [ -x /sbin/ip ]; then | ||||
| 		if [ -x /sbin/ip ] || [ -x /bin/ip ]; then | ||||
| 			ip route flush scope global | ||||
| 			ip route delete default 2>/dev/null | ||||
| 		else | ||||
| 			# Sadly we also delete some link routes, but | ||||
| 			# this cannot be helped | ||||
| @@ -155,6 +183,8 @@ routeflush() | ||||
| 				esac | ||||
| 				route del $flags $dest $netmask $xtra | ||||
| 			done | ||||
| 			# Erase any default dev eth0 routes | ||||
| 			route del default 2>/dev/null | ||||
| 		fi | ||||
| 	else | ||||
| 		route -qn flush | ||||
| @@ -193,8 +223,6 @@ start() | ||||
| 	routeflush | ||||
| 	if [ "$RC_UNAME" = "Linux" ]; then | ||||
| 		ifconfig lo 127.0.0.1 netmask 255.0.0.0 || cr=1  | ||||
| 		route add -net 127.0.0.0 netmask 255.0.0.0 \ | ||||
| 			gw 127.0.0.1 2>/dev/null | ||||
| 		route add -net 127.0.0.0 netmask 255.0.0.0 \ | ||||
| 			gw 127.0.0.1 reject 2>/dev/null | ||||
| 	else | ||||
| @@ -247,13 +275,41 @@ start() | ||||
| 	eoutdent | ||||
| 	eend $cr | ||||
|  | ||||
| 	# Wait for any inet6 tentative addresses | ||||
| 	r=5 | ||||
| 	while [ $r -gt 0 ]; do | ||||
| 		tentative || break | ||||
| 		[ $r = 5 ] && vebegin "Waiting for tentative addresses" | ||||
| 		sleep 1 | ||||
| 		r=$(($r - 1)) | ||||
| 	done | ||||
| 	if [ $r != 5 ]; then | ||||
| 		[ $r != 0 ] | ||||
| 		veend $? | ||||
| 	fi | ||||
| 	 | ||||
| 	if [ -n "$defaultroute" ]; then | ||||
| 		ebegin "Setting default route $defaultroute" | ||||
| 		route add default $defaultroute | ||||
| 		eend $? | ||||
| 	elif [ -n "$defaultiproute" ]; then | ||||
| 		ebegin "Setting default route $defaultiproute" | ||||
| 		ip route add default $defaultiproute | ||||
| 		eend $? | ||||
| 	fi | ||||
|  | ||||
| 	if [ -n "$defaultroute6" ]; then | ||||
| 		ebegin "Setting default route $defaultroute6" | ||||
| 		if [ "$RC_UNAME" = Linux ]; then | ||||
| 			route add default gw $defaultroute | ||||
| 			routecmd="route -A inet6 add" | ||||
| 		else | ||||
| 			route add default $defaultroute | ||||
| 			routecmd="route -inet6 add" | ||||
| 		fi | ||||
| 		$routecmd default $defaultroute6 | ||||
| 		eend $? | ||||
| 	elif [ -n "$defaultiproute6" ]; then | ||||
| 		ebegin "Setting default route $defaultiproute6" | ||||
| 		ip -f inet6 route add default $defaultiproute6 | ||||
| 		eend $? | ||||
| 	fi | ||||
|  | ||||
| @@ -282,6 +338,11 @@ stop() | ||||
| 		then | ||||
| 			veinfo "$int" | ||||
| 			runargs /etc/ifdown."$int" "$downcmd" | ||||
| 			if [ -x /sbin/ip ] || [ -x /bin/ip ]; then | ||||
| 				# We need to do this, otherwise we may | ||||
| 				# fail to add things correctly on restart | ||||
| 				ip address flush dev "$int" 2>/dev/null | ||||
| 			fi | ||||
| 			ifconfig "$int" down 2>/dev/null | ||||
| 			ifconfig "$int" destroy 2>/dev/null | ||||
| 		fi | ||||
|   | ||||
| @@ -13,7 +13,7 @@ depend() | ||||
|  | ||||
| start() | ||||
| { | ||||
| 	# Make sure we insert usbcore if its a module | ||||
| 	# Make sure we insert usbcore if it's a module | ||||
| 	if [ -f /proc/modules -a ! -d /proc/bus/usb ]; then | ||||
| 		modprobe -q usbcore | ||||
| 	fi | ||||
|   | ||||
| @@ -15,32 +15,47 @@ depend() | ||||
| 	keyword -jail -prefix -vserver | ||||
| } | ||||
|  | ||||
| pre_flight_checks() | ||||
| { | ||||
| 	route=route | ||||
| 	[ -s /etc/route.conf ] && return 0 | ||||
|  | ||||
| 	if [ -n "$staticiproute" ]; then | ||||
| 		route="ip route" | ||||
| 		staticroute="$staticiproute" | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| dump_args() | ||||
| { | ||||
| 	# Route configuration file, as used by the NetBSD RC system | ||||
| 	if [ -s /etc/route.conf ]; then | ||||
| 		cat /etc/route.conf | ||||
| 	else | ||||
| 		case "$staticroute" in | ||||
| 		*"$__nl"*) | ||||
| 			echo "$staticroute" | ||||
| 			;; | ||||
| 		*) | ||||
| 			( | ||||
| 		 		set -o noglob | ||||
| 				IFS=';'; set -- $staticroute | ||||
| 				IFS="$__nl"; echo "$*" | ||||
| 			) | ||||
| 			;; | ||||
| 		esac | ||||
| 		return $? | ||||
| 	fi | ||||
|  | ||||
| 	case "$staticroute" in | ||||
| 	*"$__nl"*) | ||||
| 		echo "$staticroute" | ||||
| 		;; | ||||
| 	*) | ||||
| 		( | ||||
| 			set -o noglob | ||||
| 			IFS=';'; set -- $staticroute | ||||
| 			IFS="$__nl"; echo "$*" | ||||
| 		) | ||||
| 		;; | ||||
| 	esac | ||||
| } | ||||
|  | ||||
| do_routes() | ||||
| { | ||||
| 	local xtra= | ||||
| 	local xtra= family= | ||||
| 	[ "$RC_UNAME" != Linux ] && xtra=-q | ||||
|  | ||||
| 	ebegin "$1 static routes" | ||||
| 	eindent | ||||
| 	pre_flight_checks | ||||
| 	dump_args | while read args; do | ||||
| 		[ -z "$args" ] && continue | ||||
| 		case "$args" in | ||||
| @@ -53,10 +68,26 @@ do_routes() | ||||
| 			[ $2 = "del" -o $2 = "delete" ] && eval ${args#*-} | ||||
| 			;; | ||||
| 		*) | ||||
| 			route $xtra $2 -$args | ||||
| 			;; | ||||
| 			veinfo "$args" | ||||
| 			case "$route" in | ||||
| 			"ip route") | ||||
| 				ip route $2 $args | ||||
| 				;; | ||||
| 			*) | ||||
| 				# Linux route does cannot work it out ... | ||||
| 				if [ "$RC_UNAME" = Linux ]; then | ||||
| 					case "$args" in | ||||
| 					*:*) family="-A inet6";; | ||||
| 					*) family=;; | ||||
| 					esac | ||||
| 				fi | ||||
| 				route $famly $xtra $2 -$args | ||||
| 				;; | ||||
| 			esac | ||||
| 			veend $? | ||||
| 		esac | ||||
| 	done | ||||
| 	eoutdent | ||||
| 	eend 0 | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -4,7 +4,6 @@ | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	use hostname | ||||
| 	before bootmisc logger | ||||
| 	keyword -prefix | ||||
| } | ||||
|   | ||||
| @@ -4,7 +4,6 @@ | ||||
|  | ||||
| depend() | ||||
| { | ||||
| 	use hostname | ||||
| 	before bootmisc logger | ||||
| 	keyword -openvz -prefix -vserver | ||||
| } | ||||
|   | ||||
| @@ -39,7 +39,7 @@ | ||||
| .Nm eprefix | ||||
| .Nd colorful informational output | ||||
| .Sh LIBRARY | ||||
| Enhanced Informatation output library (libeinfo, -leinfo) | ||||
| Enhanced Information output library (libeinfo, -leinfo) | ||||
| .Sh SYNOPSIS | ||||
| .In einfo.h | ||||
| .Ft int Fn einfo "const char * restrict format" ... | ||||
|   | ||||
| @@ -36,7 +36,7 @@ | ||||
| .Nm | ||||
| gathers and displays information about the status of services  | ||||
| in different runlevels.  The default behavior is to show information  | ||||
| about the current runlevel and any unassgined services that are not stopped, | ||||
| about the current runlevel and any unassigned services that are not stopped, | ||||
| but any runlevel can be quickly examined. | ||||
| .Pp | ||||
| The options are as follows: | ||||
|   | ||||
| @@ -54,7 +54,7 @@ owned by | ||||
| .Fa uid , | ||||
| all of which are optional. | ||||
| .Pp | ||||
| The retuned list should be freed when done. | ||||
| The returned list should be freed when done. | ||||
| .Sh IMPLEMENTATION NOTES | ||||
| On BSD systems we use | ||||
| .Lb libkvm | ||||
|   | ||||
| @@ -42,7 +42,7 @@ is set to the hook running, and | ||||
| .Fa name | ||||
| is set to the name of the runlevel or name of the service. | ||||
| .Pp | ||||
| Plugins can affect the parent environemnt by writing NULL separated strings to | ||||
| Plugins can affect the parent environment by writing NULL separated strings to | ||||
| .Va rc_environ_fd . | ||||
| .Sh SEE ALSO | ||||
| .Xr rc 8 , | ||||
|   | ||||
| @@ -39,8 +39,8 @@ | ||||
| .Nm | ||||
| is basically an interpreter for shell scripts which provide an easy interface | ||||
| to the often complex system commands and daemons. | ||||
| When a service runs a command it first loads it's mulitplexed configuration | ||||
| file, then it's master configuration file, then | ||||
| When a service runs a command it first loads its multiplexed configuration | ||||
| file, then its master configuration file, then | ||||
| .Pa /etc/rc.conf | ||||
| and finally the script itself. At this point | ||||
| .Nm | ||||
| @@ -79,7 +79,7 @@ Ignore all dependency information the service supplies. | ||||
| Only run the command if the service has been started. | ||||
| .It Fl q , -quiet | ||||
| Turns off all informational output the service generates. | ||||
| Output from any non OpenRC comands is not affected. | ||||
| Output from any non OpenRC commands is not affected. | ||||
| .It Fl v , -verbose | ||||
| Turns on any extra informational output the service generates. | ||||
| .It Fl Z , -dry-run | ||||
| @@ -90,9 +90,9 @@ or stopping them. | ||||
| The following variables affect the service script: | ||||
| .Bl -tag -width "RC_DEFAULTLEVEL" | ||||
| .It Ar extra_commands | ||||
| Space seperated list of extra commands the service defines. | ||||
| Space separated list of extra commands the service defines. | ||||
| .It Ar extra_started_commands | ||||
| Space seperated list of extra commands the service defines. These only work if | ||||
| Space separated list of extra commands the service defines. These only work if | ||||
| the service has already been started. | ||||
| .It Ar description | ||||
| String describing the service. | ||||
| @@ -128,7 +128,7 @@ will refuse to stop until any services that need it have stopped. | ||||
| The service will attempt to start any services we use that have been added | ||||
| to the runlevel. | ||||
| .It Ic after | ||||
| The service will start after thse services and stop before these services. | ||||
| The service will start after these services and stop before these services. | ||||
| .It Ic before | ||||
| The service will start before these services and stop after these services. | ||||
| .It Ic provide | ||||
| @@ -225,7 +225,7 @@ is newer than | ||||
| return 0, otherwise 1. | ||||
| If | ||||
| .Ar file2 | ||||
| is a directory, then check all it's contents too. | ||||
| is a directory, then check all its contents too. | ||||
| .It Ic is_older_than Ar file1 Ar file2 ... | ||||
| If | ||||
| .Ar file1 | ||||
| @@ -234,7 +234,7 @@ is newer than | ||||
| return 0, otherwise 1. | ||||
| If | ||||
| .Ar file2 | ||||
| is a directory, then check all it's contents too. | ||||
| is a directory, then check all its contents too. | ||||
| .It Ic service_set_value Ar name Ar value | ||||
| Saves the | ||||
| .Ar name | ||||
| @@ -320,7 +320,7 @@ Configuration files, relative to the location of the service. | ||||
| If a file ending with .${RC_RUNLEVEL} exists then we use that instead. | ||||
| .Bl -ohang | ||||
| .It Pa ../conf.d/${RC_SVCNAME%%.*} | ||||
| mulitplexed configuration file. | ||||
| multiplexed configuration file. | ||||
| Example: if ${RC_SVCNAME} is net.eth1 then look for | ||||
| .Pa ../conf.d/net . | ||||
| .It Pa ../conf.d/${RC_SVCNAME} | ||||
|   | ||||
| @@ -22,7 +22,7 @@ | ||||
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
| .\" SUCH DAMAGE. | ||||
| .\" | ||||
| .Dd October 14, 2009 | ||||
| .Dd December 14, 2009 | ||||
| .Dt START-STOP-DAEMON 8 SMM | ||||
| .Os OpenRC | ||||
| .Sh NAME | ||||
| @@ -43,7 +43,7 @@ | ||||
| .Ar daemon | ||||
| .Sh DESCRIPTION | ||||
| .Nm | ||||
| provides a consistent method of starting, stopping and signalling daemons. | ||||
| provides a consistent method of starting, stopping and signaling daemons. | ||||
| If neither | ||||
| .Fl K , -stop | ||||
| nor | ||||
| @@ -85,7 +85,7 @@ then | ||||
| .Nm | ||||
| matches the process | ||||
| .D1 /usr/bin/perl -w foo | ||||
| If an interpreted daemon changes it's process name then this won't work. | ||||
| If an interpreted daemon changes its process name then this won't work. | ||||
| .It Fl u , -user Ar user Ns Op : Ns Ar group | ||||
| Start the daemon as the | ||||
| .Ar user | ||||
| @@ -136,6 +136,10 @@ option. Only useful when used with daemons that run in the foreground and | ||||
| forced into the background with the | ||||
| .Fl -b , -background | ||||
| option. | ||||
| .It Fl I , -ionice Ar class Ns Op : Ns Ar data | ||||
| Modifies the IO scheduling priority of the daemon. | ||||
| Class can be 0 for none, 1 for real time, 2 for best effort and 3 for idle. | ||||
| Data can be from 0 to 7 inclusive. | ||||
| .It Fl N , -nice Ar level | ||||
| Modifies the scheduling priority of the daemon. | ||||
| .It Fl 1 , -stdout Ar logfile | ||||
|   | ||||
| @@ -15,7 +15,14 @@ _is_bond() | ||||
|  | ||||
| bonding_pre_start() | ||||
| { | ||||
| 	local x= s= slaves="$(_get_array "slaves_${IFVAR}")"  | ||||
| 	local x= s= n= slaves= primary= | ||||
|  | ||||
| 	slaves="$(_get_array "slaves_${IFVAR}")" | ||||
| 	unset slaves_${IFVAR} | ||||
|  | ||||
| 	eval primary="\$primary_${IFVAR}" | ||||
| 	unset primary_${IFVAR} | ||||
|  | ||||
|  | ||||
| 	[ -z "${slaves}" ] && return 0 | ||||
|  | ||||
| @@ -39,13 +46,31 @@ bonding_pre_start() | ||||
| 		return 1 | ||||
| 	fi | ||||
|  | ||||
| 	# Configure the bond. | ||||
| 	# Nice and dynamic :) | ||||
| 	# Interface must be down in order to configure | ||||
| 	_down | ||||
|  | ||||
| 	# Configure the bond mode, then we can reloop to ensure we configure | ||||
| 	# All other options | ||||
| 	for x in /sys/class/net/"${IFACE}"/bonding/mode; do | ||||
| 		[ -f "${x}" ] || continue | ||||
| 		n=${x##*/} | ||||
| 		eval s=\$${n}_${IFVAR} | ||||
| 		if [ -n "${s}" ]; then | ||||
| 			einfo "Setting ${n}: ${s}" | ||||
| 			echo "${s}" >"${x}" || \ | ||||
| 			eerror "Failed to configure $n (${n}_${IFVAR})" | ||||
| 		fi | ||||
| 	done | ||||
| 	# Nice and dynamic for remaining options:) | ||||
| 	for x in /sys/class/net/"${IFACE}"/bonding/*; do | ||||
| 		[ -f "${x}" ] || continue | ||||
| 		eval s=\$${x##*/}_${IFVAR} | ||||
| 		n=${x##*/} | ||||
| 		eval s=\$${n}_${IFVAR} | ||||
| 		[ "${n}" != "mode" ] || continue | ||||
| 		if [ -n "${s}" ]; then | ||||
| 			echo "${s}" >"${x}" | ||||
| 			einfo "Setting ${n}: ${s}" | ||||
| 			echo "${s}" >"${x}" || \ | ||||
| 			eerror "Failed to configure $n (${n}_${IFVAR})" | ||||
| 		fi | ||||
| 	done | ||||
|  | ||||
| @@ -72,6 +97,11 @@ bonding_pre_start() | ||||
| 	# finally add in slaves | ||||
| 	eoutdent | ||||
| 	if [ -d /sys/class/net ]; then | ||||
| 		if [ -n "${primary}" ]; then | ||||
| 			echo "+${primary}" >/sys/class/net/"${IFACE}"/bonding/slaves | ||||
| 			echo "${primary}" >/sys/class/net/"${IFACE}"/bonding/primary | ||||
| 			slaves="${slaves/${primary}/}" | ||||
| 		fi | ||||
| 		for s in ${slaves}; do | ||||
| 			echo "+${s}" >/sys/class/net/"${IFACE}"/bonding/slaves | ||||
| 		done | ||||
| @@ -117,6 +147,12 @@ bonding_stop() | ||||
| 	done | ||||
| 	) | ||||
|  | ||||
| 	_down | ||||
|  | ||||
| 	if [ -d /sys/class/net ]; then | ||||
| 		echo "-${IFACE}" > /sys/class/net/bonding_masters | ||||
| 	fi | ||||
|  | ||||
| 	eend 0 | ||||
| 	return 0 | ||||
| } | ||||
|   | ||||
| @@ -11,7 +11,8 @@ _config_vars="$_config_vars bridge bridge_add brctl" | ||||
|  | ||||
| _is_bridge() | ||||
| { | ||||
| 	brctl show 2>/dev/null | grep -q "^${IFACE}[[:space:]]" | ||||
| 	# Ignore header line so as to allow for bridges named 'bridge' | ||||
| 	brctl show 2>/dev/null | sed '1,1d' | grep -q "^${IFACE}[[:space:]]" | ||||
| } | ||||
|  | ||||
| bridge_pre_start() | ||||
| @@ -88,14 +89,16 @@ bridge_post_stop() | ||||
| 	if _is_bridge; then | ||||
| 		ebegin "Destroying bridge ${IFACE}" | ||||
| 		_down | ||||
| 		# Ignore header line so as to allow for bridges named 'bridge' | ||||
| 		ports="$(brctl show 2>/dev/null | \ | ||||
| 			sed -n -e '/^'"${IFACE}"'[[:space:]]/,/^\S/ { /^\('"${IFACE}"'[[:space:]]\|\t\)/s/^.*\t//p }')" | ||||
| 			sed -n -e '1,1d' -e '/^'"${IFACE}"'[[:space:]]/,/^\S/ { /^\('"${IFACE}"'[[:space:]]\|\t\)/s/^.*\t//p }')" | ||||
| 		delete=true | ||||
| 		iface=${IFACE} | ||||
| 		eindent | ||||
| 	else | ||||
| 		# Work out if we're added to a bridge for removal or not | ||||
| 		eval set -- $(brctl show 2>/dev/null | sed -e "s/'/'\\\\''/g" -e "s/$/'/g" -e "s/^/'/g") | ||||
| 		# Ignore header line so as to allow for bridges named 'bridge' | ||||
| 		eval set -- $(brctl show 2>/dev/null | sed -e '1,1d' -e "s/'/'\\\\''/g" -e "s/$/'/g" -e "s/^/'/g") | ||||
| 		local line= | ||||
| 		for line; do | ||||
| 			set -- ${line} | ||||
|   | ||||
| @@ -17,6 +17,7 @@ dhclient_start() | ||||
|  | ||||
| 	# Get our options | ||||
| 	# These options only work in Gentoo, and maybe RedHat | ||||
| 	eval args=\$dhclient_${IFVAR} | ||||
| 	eval opts=\$dhcp_${IFVAR} | ||||
| 	[ -z "${opts}" ] && opts=${dhcp} | ||||
|  | ||||
|   | ||||
| @@ -42,7 +42,8 @@ _ifindex() | ||||
| _is_wireless() | ||||
| { | ||||
| 	# Support new sysfs layout | ||||
| 	[ -d /sys/class/net/"${IFACE}"/wireless ] && return 0 | ||||
| 	[ -d /sys/class/net/"${IFACE}"/wireless -o \ | ||||
| 		-d /sys/class/net/"${IFACE}"/phy80211 ] && return 0 | ||||
|  | ||||
| 	[ ! -e /proc/net/wireless ] && return 1 | ||||
| 	grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless | ||||
|   | ||||
| @@ -1,9 +1,18 @@ | ||||
| # Copyright (c) 2007-2008 Roy Marples <roy@marples.name> | ||||
| # All rights reserved. Released under the 2-clause BSD license. | ||||
|  | ||||
| _ip() | ||||
| { | ||||
| 	if [ -x /bin/ip ]; then | ||||
| 		echo /bin/ip | ||||
| 	else | ||||
| 		echo /sbin/ip | ||||
| 	fi | ||||
| } | ||||
|  | ||||
| iproute2_depend() | ||||
| { | ||||
| 	program /sbin/ip | ||||
| 	program $(_ip) | ||||
| 	provide interface | ||||
| 	after ifconfig | ||||
| } | ||||
| @@ -43,7 +52,8 @@ _ifindex() | ||||
| _is_wireless() | ||||
| { | ||||
| 	# Support new sysfs layout | ||||
| 	[ -d /sys/class/net/"${IFACE}"/wireless ] && return 0 | ||||
| 	[ -d /sys/class/net/"${IFACE}"/wireless -o \ | ||||
| 		-d /sys/class/net/"${IFACE}"/phy80211 ] && return 0 | ||||
|  | ||||
| 	[ ! -e /proc/net/wireless ] && return 1 | ||||
| 	grep -Eq "^[[:space:]]*${IFACE}:" /proc/net/wireless | ||||
| @@ -159,7 +169,8 @@ _add_route() | ||||
|  | ||||
| 	# We cannot use a metric if we're using a nexthop | ||||
| 	if ! ${have_metric} && \ | ||||
| 		[ -n "${metric}" -a -z "${cmd##* nexthop }" ] | ||||
| 		[ -n "${metric}" -a \ | ||||
| 			"${cmd##* nexthop }" = "$cmd" ] | ||||
| 	then | ||||
| 		cmd="${cmd} metric ${metric}" | ||||
| 	fi | ||||
|   | ||||
| @@ -26,7 +26,7 @@ tuntap_pre_start() | ||||
| 			return 1 | ||||
| 		fi | ||||
| 		vebegin "Waiting for /dev/net/tun" | ||||
| 		# /dev/net/tun can take it's time to appear | ||||
| 		# /dev/net/tun can take its time to appear | ||||
| 		local timeout=10 | ||||
| 		while [ ! -e /dev/net/tun -a ${timeout} -gt 0 ]; do | ||||
| 			sleep 1 | ||||
|   | ||||
| @@ -20,7 +20,7 @@ _is_vlan() | ||||
| _get_vlans() | ||||
| { | ||||
| 	[ -e /proc/net/vlan/config ] || return 1 | ||||
| 	sed -n -e 's/^\(.*[0-9]\) \(.* \) .*'"${IFACE}"'$/\1/p' /proc/net/vlan/config | ||||
| 	sed -n -e 's/^\W*\([^ ]*\) \(.* \) .*'"${IFACE}"'$/\1/p' /proc/net/vlan/config | ||||
| } | ||||
|  | ||||
| _check_vlan() | ||||
| @@ -87,7 +87,7 @@ vlan_post_start() | ||||
|  | ||||
| 		# We need to work out the interface name of our new vlan id | ||||
| 		local ifname="$(sed -n -e \ | ||||
| 			's/^\([^[:space:]]*\) *| '"${vlan}"' *| .*'"${iface}"'$/\1/p' \ | ||||
| 			's/^\([^[:space:]]*\) *| '"${vlan}"' *| .*'"${IFACE}"'$/\1/p' \ | ||||
| 			/proc/net/vlan/config )" | ||||
| 		mark_service_started "net.${ifname}" | ||||
| 		( | ||||
|   | ||||
| @@ -2,7 +2,8 @@ DIR=	${LIBDIR}/pkgconfig | ||||
| SRCS=	einfo.pc.in openrc.pc.in | ||||
| INC=	einfo.pc openrc.pc | ||||
|  | ||||
| sed -n -e 's/^VERSION=[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1${GITVER}\"/p' ../../Makefile > version.h | ||||
| .DEFAULT: | ||||
| 	${SED} -n -e 's/^VERSION=[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1${GITVER}\"/p' ../../Makefile > version.h | ||||
|  | ||||
| SED_EXTRA=	-e 's:@VERSION@:${VERSION}:g' | ||||
|  | ||||
|   | ||||
							
								
								
									
										5
									
								
								scripts/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								scripts/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| DIR=	${LIBEXECDIR}/bin | ||||
| BIN=	on_ac_power | ||||
|  | ||||
| MK=	../mk | ||||
| include ${MK}/scripts.mk | ||||
							
								
								
									
										37
									
								
								scripts/on_ac_power
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										37
									
								
								scripts/on_ac_power
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| #!/bin/sh | ||||
| # Detect AC power or not in a portable way | ||||
| # Copyright (c) 2007-2009 Roy Marples <roy@marples.name> | ||||
|  | ||||
| # Exit 0 if on AC power, 1 if not and 255 if we don't know how to work it out | ||||
| if [ -f /proc/acpi/ac_adapter/AC*/state ]; then | ||||
| 	cat /proc/acpi/ac_adapter/AC*/state | while read line; do | ||||
| 		case "$line" in | ||||
| 		"state:"*"off-line") exit 128;; | ||||
| 		esac | ||||
| 	done | ||||
| elif [ -f /sys/class/power_supply/AC*/online ]; then | ||||
| 	cat /sys/class/power_supply/AC*/online | while read line; do | ||||
| 		[ "${line}" = 0 ] && exit 128 | ||||
| 	done | ||||
| elif [ -f /proc/pmu/info ]; then | ||||
| 	cat /proc/pmu/info | while read line; do | ||||
| 		case "$line" in | ||||
| 		"AC Power"*": 0") exit 128;; | ||||
| 		esac | ||||
| 	done | ||||
| elif type envstat >/dev/null 2>&1; then | ||||
| 	# NetBSD has envstat | ||||
| 	envstat -d acpiacad0 2>/dev/null | while read line; do | ||||
| 		case "$line" in | ||||
| 		"connected:"*"OFF") exit 128;; | ||||
| 		esac | ||||
| 	done | ||||
| elif sysctl -q hw.acpi.acline >/dev/null 2>/dev/null; then | ||||
| 	case $(sysctl -n hw.acpi.acline) in | ||||
| 	0) exit 1;; | ||||
| 	*) exit 0;; | ||||
| 	esac | ||||
| else | ||||
| 	exit 255 | ||||
| fi | ||||
| [ $? != 128 ] | ||||
| @@ -5,6 +5,7 @@ | ||||
| # All rights reserved. Released under the 2-clause BSD license. | ||||
|  | ||||
| . @SYSCONFDIR@/init.d/functions.sh | ||||
| . @LIBEXECDIR@/sh/rc-functions.sh | ||||
|  | ||||
| config() { | ||||
| 	[ -n "$*" ] && echo "$RC_SVCNAME config $*" >&3 | ||||
| @@ -82,24 +83,7 @@ do | ||||
|  | ||||
| 		if . "$_dir/$RC_SVCNAME"; then | ||||
| 			echo "$RC_SVCNAME" >&3 | ||||
| 			depend | ||||
| 			_rc_svcname=$(shell_var "$RC_SVCNAME") | ||||
|  | ||||
| 			# Add any user defined depends | ||||
| 			for _deptype in config:CONFIG need:NEED use:USE \ | ||||
| 			after:AFTER before:BEFORE \ | ||||
| 			provide:PROVIDE keyword:KEYWORD; do | ||||
| 				IFS=: | ||||
| 				set -- $_deptype | ||||
| 				unset IFS | ||||
| 				eval _depends=\$rc_$_rc_svcname_$1 | ||||
| 				[ -z "$_depends" ] && eval _depends=\$rc_$1 | ||||
| 				[ -z "$_depends" ] && \ | ||||
| 					eval _depends=\$RC_$_rc_svcname_$2 | ||||
| 				[ -z "$_depends" ] && eval _depends=\$RC_$2 | ||||
|  | ||||
| 				$1 ${_depends} | ||||
| 			done | ||||
| 			_depend | ||||
| 		fi | ||||
| 		) | ||||
| 	done | ||||
|   | ||||
| @@ -17,7 +17,7 @@ fi | ||||
| if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/consolefont \ | ||||
| 	 -o -e /etc/runlevels/"$RC_BOOTLEVEL"/consolefont ]; then | ||||
| 	printf "\033%s" "$termencoding" >"$CONSOLE" 2>/dev/null | ||||
| 	if [ -r "$RC_LIBEXECDIR"/console/font -a -x /bin/setfont ]; then | ||||
| 	if [ -r "$RC_LIBEXECDIR"/console/font -a -x /usr/bin/setfont ]; then | ||||
| 		font="$(cat "$RC_LIBEXECDIR"/console/font)" | ||||
| 		[ -c "$CONSOLE" ] && cons="-C $CONSOLE" | ||||
| 		setfont $cons "$RC_LIBEXECDIR"/console/"$font" 2>/dev/null | ||||
| @@ -29,7 +29,7 @@ if [ -e /etc/runlevels/"$RC_DEFAULTLEVEL"/keymaps \ | ||||
| 	 -o -e /etc/runlevels/"$RC_BOOTLEVEL"/keymaps ]; then | ||||
| 	kbd_mode $kmode -C "$CONSOLE" 2>/dev/null | ||||
| 	if [ -r "$RC_LIBEXECDIR"/console/keymap ]; then | ||||
| 		loadkeys "$RC_LIBEXECDIR"/console/keymap 2>/dev/null | ||||
| 		loadkeys -q "$RC_LIBEXECDIR"/console/keymap 2>/dev/null | ||||
| 	fi | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -70,4 +70,14 @@ if $mountproc; then | ||||
| 	eend $? | ||||
| fi | ||||
|  | ||||
| # Try to mount xenfs as early as possible, otherwise rc_sys() will always | ||||
| # return RC_SYS_XENU and will think that we are in a domU while it's not. | ||||
| if grep -Eq "[[:space:]]+xenfs$" /proc/filesystems; then | ||||
| 	ebegin "Mounting xenfs" | ||||
| 	if ! fstabinfo --mount /proc/xen; then | ||||
| 		mount -n -t xenfs xenfs /proc/xen -o nosuid,nodev,noexec | ||||
| 	fi | ||||
| 	eend $? | ||||
| fi | ||||
|  | ||||
| . "$RC_LIBEXECDIR"/sh/init-common-post.sh | ||||
|   | ||||
| @@ -38,7 +38,8 @@ stop_addon() | ||||
| 	( import_addon "$1-stop" ) | ||||
| } | ||||
|  | ||||
| net_fs_list="afs cifs coda davfs fuse gfs ncpfs nfs nfs4 ocfs2 shfs smbfs" | ||||
| net_fs_list="afs cifs coda davfs fuse fuse.sshfs gfs glusterfs lustre | ||||
| ncpfs nfs nfs4 ocfs2 shfs smbfs $extra_net_fs_list" | ||||
| is_net_fs() | ||||
| { | ||||
| 	[ -z "$1" ] && return 1 | ||||
| @@ -84,6 +85,27 @@ get_bootparam() | ||||
| 	return 1 | ||||
| } | ||||
|  | ||||
| # Called from runscript.sh or gendepends.sh | ||||
| _depend() { | ||||
| 	depend | ||||
| 	local _rc_svcname=$(shell_var "$RC_SVCNAME") _deptype= _depends= | ||||
|  | ||||
| 	# Add any user defined depends | ||||
| 	for _deptype in config:CONFIG need:NEED use:USE \ | ||||
| 	after:AFTER before:BEFORE \ | ||||
| 	provide:PROVIDE keyword:KEYWORD; do | ||||
| 		IFS=: | ||||
| 		set -- $_deptype | ||||
| 		unset IFS | ||||
| 		eval _depends=\$rc_${_rc_svcname}_$1 | ||||
| 		[ -z "$_depends" ] && eval _depends=\$rc_$1 | ||||
| 		[ -z "$_depends" ] && eval _depends=\$RC_${_rc_svcname}_$2 | ||||
| 		[ -z "$_depends" ] && eval _depends=\$RC_$2 | ||||
|  | ||||
| 		$1 $_depends | ||||
| 	done | ||||
| } | ||||
|  | ||||
| # Add our sbin to $PATH | ||||
| case "$PATH" in | ||||
| 	"$RC_LIBEXECDIR"/sbin|"$RC_LIBEXECDIR"/sbin:*);; | ||||
|   | ||||
| @@ -26,6 +26,8 @@ do_unmount() | ||||
| 		# Unmounting a shared mount can unmount other mounts, so | ||||
| 		# we need to check the mount is still valid | ||||
| 		mountinfo --quiet "$mnt" || continue | ||||
| 		# Ensure we interpret all characters properly. | ||||
| 		mnt=$(printf "$mnt") | ||||
|  | ||||
| 		case "$cmd" in | ||||
| 			umount) | ||||
| @@ -36,7 +38,7 @@ do_unmount() | ||||
| 				;; | ||||
| 		esac | ||||
|  | ||||
| 		retry=3 | ||||
| 		retry=4 # Effectively TERM, sleep 1, TERM, sleep 1, KILL, sleep 1 | ||||
| 		while ! LC_ALL=C $cmd "$mnt" 2>/dev/null; do | ||||
| 			if type fuser >/dev/null 2>&1; then | ||||
| 				pids="$(fuser $f_opts "$mnt" 2>/dev/null)" | ||||
| @@ -53,13 +55,16 @@ do_unmount() | ||||
| 					eend 1 "in use but fuser finds nothing" | ||||
| 					retry=0;; | ||||
| 				*) | ||||
| 					local sig="KILL" | ||||
| 					[ $retry -gt 0 ] && sig="TERM" | ||||
| 					fuser $f_kill$sig -k $f_opts \ | ||||
| 						"$mnt" >/dev/null 2>&1 | ||||
| 					sleep 1 | ||||
| 					retry=$(($retry - 1)) | ||||
| 					[ $retry -le 0 ] && eend 1 | ||||
| 					if [ $retry -le 0 ]; then | ||||
| 						eend 1 | ||||
| 					else | ||||
| 						local sig="TERM" | ||||
| 						retry=$(($retry - 1)) | ||||
| 						[ $retry = 1 ] && sig="KILL" | ||||
| 						fuser $f_kill$sig -k $f_opts \ | ||||
| 							"$mnt" >/dev/null 2>&1 | ||||
| 						sleep 1 | ||||
| 					fi | ||||
| 					;; | ||||
| 			esac | ||||
| 			[ $retry -le 0 ] && break | ||||
|   | ||||
| @@ -187,8 +187,14 @@ done | ||||
| unset _f | ||||
|  | ||||
| while [ -n "$1" ]; do | ||||
| 	# Sepcial case depend | ||||
| 	if [ "$1" = depend ]; then | ||||
| 		shift | ||||
| 		_depend | ||||
| 		continue | ||||
| 	fi | ||||
| 	# See if we have the required function and run it | ||||
| 	for _cmd in describe start stop status depend ${extra_commands:-$opts} \ | ||||
| 	for _cmd in describe start stop status ${extra_commands:-$opts} \ | ||||
| 		$extra_started_commands | ||||
| 	do | ||||
| 		if [ "$_cmd" = "$1" ]; then | ||||
|   | ||||
| @@ -643,7 +643,7 @@ static int EINFO_PRINTF(3, 0) | ||||
| 		fprintf(f, "\n"); | ||||
| 	if (_eprefix) | ||||
| 		fprintf(f, "%s%s%s|", _ecolor(f, color), _eprefix, _ecolor(f, ECOLOR_NORMAL)); | ||||
| 	fprintf(f, "%s*%s ", _ecolor(f, color), _ecolor(f, ECOLOR_NORMAL)); | ||||
| 	fprintf(f, " %s*%s ", _ecolor(f, color), _ecolor(f, ECOLOR_NORMAL)); | ||||
| 	retval += _eindent(f); | ||||
| 	va_copy(ap, va); | ||||
| 	retval += vfprintf(f, fmt, ap) + 3; | ||||
| @@ -800,7 +800,7 @@ ebegin(const char *EINFO_RESTRICT fmt, ...) | ||||
| 	va_start(ap, fmt); | ||||
| 	retval = _einfovn(fmt, ap); | ||||
| 	va_end(ap); | ||||
| 	retval += printf("..."); | ||||
| 	retval += printf(" ..."); | ||||
| 	if (colour_terminal(stdout)) | ||||
| 		retval += printf("\n"); | ||||
| 	LASTCMD("ebegin"); | ||||
| @@ -817,7 +817,7 @@ _eend(FILE * EINFO_RESTRICT fp, int col, ECOLOR color, const char *msg) | ||||
| 	if (!msg) | ||||
| 		return; | ||||
|  | ||||
| 	cols = get_term_columns(fp) - (strlen(msg) + 3); | ||||
| 	cols = get_term_columns(fp) - (strlen(msg) + 5); | ||||
|  | ||||
| 	/* cons25 is special - we need to remove one char, otherwise things | ||||
| 	 * do not align properly at all. */ | ||||
| @@ -831,18 +831,15 @@ _eend(FILE * EINFO_RESTRICT fp, int col, ECOLOR color, const char *msg) | ||||
| 	if (term_is_cons25) | ||||
| 		cols--; | ||||
|  | ||||
| 	/* If extra spacing is required around msg, then please change | ||||
| 	 * via a runtime knob and leave this default as is as it saves 2  | ||||
| 	 * valuable columns when running on 80 column screens. */ | ||||
| 	if (cols > 0 && colour_terminal(fp)) { | ||||
| 		fprintf(fp, "%s%s %s[%s%s%s]%s\n", up, tgoto(goto_column, 0, cols), | ||||
| 		fprintf(fp, "%s%s %s[%s %s %s]%s\n", up, tgoto(goto_column, 0, cols), | ||||
| 		    ecolor(ECOLOR_BRACKET), ecolor(color), msg, | ||||
| 		    ecolor(ECOLOR_BRACKET), ecolor(ECOLOR_NORMAL)); | ||||
| 	} else { | ||||
| 		if (col > 0) | ||||
| 			for (i = 0; i < cols - col; i++) | ||||
| 				fprintf(fp, " "); | ||||
| 		fprintf(fp, " [%s]\n", msg); | ||||
| 		fprintf(fp, " [ %s ]\n", msg); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -1030,7 +1027,7 @@ ebeginv(const char *EINFO_RESTRICT fmt, ...) | ||||
|  | ||||
| 	va_start(ap, fmt); | ||||
| 	retval = _einfovn(fmt, ap); | ||||
| 	retval += printf("..."); | ||||
| 	retval += printf(" ..."); | ||||
| 	if (colour_terminal(stdout)) | ||||
| 		retval += printf("\n"); | ||||
| 	va_end(ap); | ||||
|   | ||||
| @@ -377,7 +377,7 @@ rc_runlevel_stacks(const char *runlevel) | ||||
| } | ||||
| librc_hidden_def(rc_runlevel_stacks) | ||||
|  | ||||
| /* Resolve a service name to it's full path */ | ||||
| /* Resolve a service name to its full path */ | ||||
| char * | ||||
| rc_service_resolve(const char *service) | ||||
| { | ||||
|   | ||||
| @@ -117,7 +117,7 @@ bool rc_runlevel_stopping(void); | ||||
|  | ||||
| /*! @name RC | ||||
|  * A service can be given as a full path or just its name. | ||||
|  * If its just a name then we try to resolve the service to a full path. | ||||
|  * If it's just a name then we try to resolve the service to a full path. | ||||
|  * This should allow the use if local init.d directories in the future. */ | ||||
|  | ||||
| /*! @brief States a service can be in */ | ||||
| @@ -326,7 +326,7 @@ typedef void *RC_DEPTREE; | ||||
| #endif | ||||
|  | ||||
| /*! Check to see if source is newer than target. | ||||
|  * If target is a directory then we traverse it and it's children. | ||||
|  * If target is a directory then we traverse it and its children. | ||||
|  * @param source | ||||
|  * @param target | ||||
|  * @param mtime of newest target | ||||
| @@ -335,7 +335,7 @@ typedef void *RC_DEPTREE; | ||||
| bool rc_newer_than(const char *, const char *, time_t *, char *); | ||||
|  | ||||
| /*! Check to see if source is older than target. | ||||
|  * If target is a directory then we traverse it and it's children. | ||||
|  * If target is a directory then we traverse it and its children. | ||||
|  * @param source | ||||
|  * @param target | ||||
|  * @param mtime of oldest target | ||||
| @@ -446,7 +446,7 @@ RC_STRINGLIST *rc_config_load(const char *); | ||||
| /*! Return the value of the entry from a key=value list. */ | ||||
| char *rc_config_value(RC_STRINGLIST *, const char *); | ||||
|  | ||||
| /*! Check if a variable is a boolean and return it's value. | ||||
| /*! Check if a variable is a boolean and return its value. | ||||
|  * If variable is not a boolean then we set errno to be ENOENT when it does | ||||
|  * not exist or EINVAL if it's not a boolean. | ||||
|  * @param variable to check | ||||
| @@ -485,9 +485,9 @@ bool rc_stringlist_delete(RC_STRINGLIST *, const char *); | ||||
|  * @return pointer to item */ | ||||
| RC_STRING *rc_stringlist_find(RC_STRINGLIST *, const char *); | ||||
|  | ||||
| /*! Split a string into a stringlist based on seperator. | ||||
| /*! Split a string into a stringlist based on separator. | ||||
|  * @param string to split | ||||
|  * @param seperator | ||||
|  * @param separator | ||||
|  * @return new list */ | ||||
| RC_STRINGLIST *rc_stringlist_split(const char *, const char *); | ||||
|  | ||||
|   | ||||
| @@ -38,7 +38,7 @@ | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
|  | ||||
| /* Yay for linux and it's non liking of POSIX functions. | ||||
| /* Yay for linux and its non liking of POSIX functions. | ||||
|    Okay, we could use getfsent but the man page says use getmntent instead | ||||
|    AND we don't have getfsent on uclibc or dietlibc for some odd reason. */ | ||||
| #ifdef __linux__ | ||||
|   | ||||
| @@ -467,7 +467,7 @@ run_applets(int argc, char **argv) | ||||
| 		} | ||||
| 		exit(EXIT_FAILURE); | ||||
| 	}; | ||||
| 	/* This tets is correct as it's not present in baselayout */ | ||||
| 	/* This test is correct as it's not present in baselayout */ | ||||
| 	if (strcmp(applet, "is_newer_than") == 0) { | ||||
| 		if (argc < 3) | ||||
| 			exit (EXIT_FAILURE); | ||||
|   | ||||
| @@ -219,6 +219,7 @@ static const char * const longopts_help[] = { | ||||
| int | ||||
| rc_update(int argc, char **argv) | ||||
| { | ||||
| 	RC_DEPTREE *deptree; | ||||
| 	RC_STRINGLIST *runlevels; | ||||
| 	RC_STRING *runlevel; | ||||
| 	char *service = NULL; | ||||
| @@ -238,7 +239,9 @@ rc_update(int argc, char **argv) | ||||
| 		    stack = true; | ||||
| 		break; | ||||
| 		case 'u': | ||||
| 			_rc_deptree_load(-1, &ret); | ||||
| 			deptree = _rc_deptree_load(-1, &ret); | ||||
| 			if (deptree) | ||||
| 				rc_deptree_free(deptree); | ||||
| 			return ret; | ||||
| 			case_RC_COMMON_GETOPT; | ||||
| 		} | ||||
|   | ||||
| @@ -773,7 +773,7 @@ handle_bad_signal(int sig) | ||||
| #endif | ||||
|  | ||||
| #include "_usage.h" | ||||
| #define getoptstring "o:" getoptstring_COMMON | ||||
| #define getoptstring "o:s:S" getoptstring_COMMON | ||||
| static const struct option longopts[] = { | ||||
| 	{ "override", 1, NULL, 'o' }, | ||||
| 	{ "service",  1, NULL, 's' }, | ||||
|   | ||||
| @@ -739,6 +739,8 @@ svc_start_deps(void) | ||||
| 		free(tmp); | ||||
| 	} | ||||
|  | ||||
| 	rc_stringlist_free(tmplist); | ||||
| 	tmplist = NULL; | ||||
| 	rc_stringlist_free(services); | ||||
| 	services = NULL; | ||||
| } | ||||
| @@ -998,7 +1000,7 @@ svc_restart(void) | ||||
| 	 * dns via resolvconf, so you could have openvpn trying to restart | ||||
| 	 * dnsmasq which in turn is waiting on net which in turn is waiting | ||||
| 	 * on dnsmasq. | ||||
| 	 * The work around is for resolvconf to restart it's services with | ||||
| 	 * The work around is for resolvconf to restart its services with | ||||
| 	 * --nodeps which means just that. | ||||
| 	 * The downside is that there is a small window when our status is | ||||
| 	 * invalid. | ||||
| @@ -1106,7 +1108,7 @@ runscript(int argc, char **argv) | ||||
| 	atexit(cleanup); | ||||
|  | ||||
| 	/* We need to work out the real full path to our service. | ||||
| 	 * This works fine, provided that we ONLY allow mulitplexed services | ||||
| 	 * This works fine, provided that we ONLY allow multiplexed services | ||||
| 	 * to exist in the same directory as the master link. | ||||
| 	 * Also, the master link as to be a real file in the init dir. */ | ||||
| 	if (!realpath(argv[1], path)) { | ||||
| @@ -1192,7 +1194,7 @@ runscript(int argc, char **argv) | ||||
|  | ||||
| 	deps = true; | ||||
| 	 | ||||
| 	/* Punt the first arg as it's our service name */ | ||||
| 	/* Punt the first arg as its our service name */ | ||||
| 	argc--; | ||||
| 	argv++; | ||||
|  | ||||
| @@ -1316,6 +1318,12 @@ runscript(int argc, char **argv) | ||||
| 			prefix = NULL; | ||||
| 			retval = svc_exec("status", NULL); | ||||
| 		} else { | ||||
| 			if (strcmp(optarg, "pause") == 0) { | ||||
| 				ewarn("WARNING: 'pause' is deprecated; please use '--nodeps stop'"); | ||||
| 				deps = false; | ||||
| 				optarg = "stop"; | ||||
| 			} | ||||
|  | ||||
| 			if (strcmp(optarg, "conditionalrestart") == 0 || | ||||
| 			    strcmp(optarg, "condrestart") == 0) | ||||
| 			{ | ||||
|   | ||||
| @@ -47,6 +47,10 @@ | ||||
| #include <sys/time.h> | ||||
| #include <sys/wait.h> | ||||
|  | ||||
| #ifdef __linux__ | ||||
| #include <sys/syscall.h> /* For io priority */ | ||||
| #endif | ||||
|  | ||||
| #include <ctype.h> | ||||
| #include <errno.h> | ||||
| #include <fcntl.h> | ||||
| @@ -104,6 +108,13 @@ static char *changeuser, *ch_root, *ch_dir; | ||||
|  | ||||
| extern char **environ; | ||||
|  | ||||
| #ifdef __linux__ | ||||
| static inline int ioprio_set(int which, int who, int ioprio) | ||||
| { | ||||
| 	return syscall(SYS_ioprio_set, which, who, ioprio); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| static void | ||||
| free_schedulelist(void) | ||||
| { | ||||
| @@ -589,8 +600,9 @@ expand_home(const char *home, const char *path) | ||||
| } | ||||
|  | ||||
| #include "_usage.h" | ||||
| #define getoptstring "KN:PR:Sbc:d:e:g:ik:mn:op:s:tu:r:w:x:1:2:" getoptstring_COMMON | ||||
| #define getoptstring "I:KN:PR:Sbc:d:e:g:ik:mn:op:s:tu:r:w:x:1:2:" getoptstring_COMMON | ||||
| static const struct option longopts[] = { | ||||
| 	{ "ionice",       1, NULL, 'I'}, | ||||
| 	{ "stop",         0, NULL, 'K'}, | ||||
| 	{ "nicelevel",    1, NULL, 'N'}, | ||||
| 	{ "retry",        1, NULL, 'R'}, | ||||
| @@ -619,6 +631,7 @@ static const struct option longopts[] = { | ||||
| 	longopts_COMMON | ||||
| }; | ||||
| static const char * const longopts_help[] = { | ||||
| 	"Set an ionice class:data when starting",  | ||||
| 	"Stop daemon", | ||||
| 	"Set a nicelevel when starting", | ||||
| 	"Retry schedule to use when stopping", | ||||
| @@ -675,7 +688,7 @@ start_stop_daemon(int argc, char **argv) | ||||
| 	char *pidfile = NULL; | ||||
| 	char *retry = NULL; | ||||
| 	int sig = -1; | ||||
| 	int nicelevel = 0; | ||||
| 	int nicelevel = 0, ionicec = -1, ioniced = 0; | ||||
| 	bool background = false; | ||||
| 	bool makepidfile = false; | ||||
| 	bool interpreted = false; | ||||
| @@ -738,6 +751,17 @@ start_stop_daemon(int argc, char **argv) | ||||
| 	while ((opt = getopt_long(argc, argv, getoptstring, longopts, | ||||
| 		    (int *) 0)) != -1) | ||||
| 		switch (opt) { | ||||
| 		case 'I': /* --ionice */ | ||||
| 			if (sscanf(optarg, "%d:%d", &ionicec, &ioniced) == 0) | ||||
| 				eerrorx("%s: invalid ionice `%s'", | ||||
| 				    applet, optarg); | ||||
| 			if (ionicec == 0) | ||||
| 				ioniced = 0; | ||||
| 			else if (ionicec == 3) | ||||
| 				ioniced = 7; | ||||
| 			ionicec <<= 13; /* class shift */ | ||||
| 			break; | ||||
|  | ||||
| 		case 'K':  /* --stop */ | ||||
| 			stop = true; | ||||
| 			break; | ||||
| @@ -1121,6 +1145,14 @@ start_stop_daemon(int argc, char **argv) | ||||
| 				    strerror(errno)); | ||||
| 		} | ||||
|  | ||||
| /* Only linux suports setting an IO priority */ | ||||
| #ifdef __linux__ | ||||
| 		if (ionicec != -1 && | ||||
| 		    ioprio_set(1, mypid, ionicec | ioniced) == -1) | ||||
| 			eerrorx("%s: ioprio_set %d %d: %s", applet, | ||||
| 			    ionicec, ioniced, strerror(errno)); | ||||
| #endif | ||||
|  | ||||
| 		if (ch_root && chroot(ch_root) < 0) | ||||
| 			eerrorx("%s: chroot `%s': %s", | ||||
| 			    applet, ch_root, strerror(errno)); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user