All pastes #161141 Raw Edit

mos

public shellscript v1 · immutable
·published 2006-09-05 01:46 UTC
rendered paste body
#!/bin/bash. /etc/rc.conf. /etc/rc.d/functions# wireless settings[ -f /etc/conf.d/wireless ] && . /etc/conf.d/wireless# ethernet bonding settings[ -f /etc/conf.d/bonding ] && . /etc/conf.d/bonding# bridge settings[ -f /etc/conf.d/bridges ] && . /etc/conf.d/bridges# dhcpcd settings[ -f /etc/conf.d/dhcpcd ] && . /etc/conf.d/dhcpcd# Special wrapper for hotplug ifup calls#  (make sure hotplug doesn't bring up disabled interfaces)hotplug_ifup(){	[ "$1" != "" ] || return 1	for ifline in ${INTERFACES[@]}; do		# if the interface is disabled then this will be skipped		if [ "$ifline" = "$1" ]; then			ifup $ifline		fi	done}ifup(){	if [ "$1" = "" ]; then		echo "usage: $0 ifup <interface_name>"		return 1	fi	# don't bring up an interface that's already up	[ "`/sbin/ifconfig ${1} 2>/dev/null | grep UP`" ] && return 0	eval iwcfg="\$wlan_${1}"	if [ "$iwcfg" != "" ]; then		sh -c "/usr/sbin/iwconfig $iwcfg"		/bin/sleep 2	fi	eval ifcfg="\$${1}"	if [ "$ifcfg" = "dhcp" ]; then		# remove the .pid file if it exists		rm -f /etc/dhcpc/dhcpcd-${1}.{pid,cache} >/dev/null 2>&1		/sbin/dhcpcd $DHCPCD_ARGS ${1}	else		/sbin/ifconfig $ifcfg	fi	return $?}ifdown(){	if [ "$1" = "" ]; then		echo "usage: $0 ifdown <interface_name>"		return 1	fi	eval ifcfg="\$${1}"	if [ "$ifcfg" = "dhcp" ]; then		if [ -f /etc/dhcpc/dhcpcd-${1}.pid ]; then			kill `cat /etc/dhcpc/dhcpcd-${1}.pid`		else			# No .pid file, just bring the interface itself down			/sbin/ifconfig ${1} down		fi	else		/sbin/ifconfig $ifcfg down	fi	return $?}iflist(){	for ifline in ${INTERFACES[@]}; do		if [ "$ifline" = "${ifline#!}" ]; then			echo -en " $ifline:\t"		else			echo -en "$ifline:\t"		fi		eval real_ifline=\$${ifline#!}		echo $real_ifline	done}rtup(){	if [ "$1" = "" ]; then		echo "usage: $0 rtup <route_name>"		return 1	fi	eval routecfg="\$${1}"	/sbin/route add $routecfg	return $?}rtdown(){	if [ "$1" = "" ]; then		echo "usage: $0 rtdown <route_name>"		return 1	fi	eval routecfg="\$${1}"	/sbin/route del $routecfg	return $?}rtlist(){	for rtline in ${ROUTES[@]}; do		if [ "$rtline" = "${rtline#!}" ]; then			echo -en " $rtline:\t"		else			echo -en "$rtline:\t"		fi		eval real_rtline=\$${rtline#!}		echo $real_rtline	done}bond_up(){	for ifline in ${BOND_INTERFACES[@]}; do		if [ "$ifline" = "${ifline#!}" ]; then			eval bondcfg="\$bond_${ifline}"			/sbin/ifenslave $ifline $bondcfg || error=1		fi	done}bridge_up(){	for br in ${BRIDGE_INTERFACES[@]}; do		if [ "$br" = "${br#!}" ]; then			# if the bridge already exists, remove it			if [ "`/sbin/ifconfig $br 2>/dev/null`" ]; then				/sbin/ifconfig $br down				/usr/sbin/brctl delbr $br			fi			/usr/sbin/brctl addbr $br			eval brifs="\$bridge_${br}"			for brif in $brifs; do				if [ "$brif" = "${brif#!}" ]; then					/usr/sbin/brctl addif $br $brif || error=1				fi			done		fi	done}bridge_down(){	for br in ${BRIDGE_INTERFACES[@]}; do		if [ "$br" = "${br#!}" ]; then			/usr/sbin/brctl delbr $br		fi	done}case "$1" in	start)		if ! ck_daemon network; then			echo "Network is already running.  Try 'network restart'"			exit		fi		# See if we're using network profiles		if [ "$NET" ]; then			# This env var is passed from the kernel boot line			if [ "$NET" = "menu" ]; then				/usr/bin/netcfg --menu --timeout 5			else				/usr/bin/netcfg $NET			fi		elif [ "$NET_PROFILES" ]; then			if [ "$NET_PROFILES" = "menu" ]; then				/usr/bin/netcfg --menu --timeout 5			else				for prof in ${NET_PROFILES[@]}; do					if [ "$prof" = "${prof#!}" ]; then						/usr/bin/netcfg -c $prof					fi				done			fi		fi		stat_busy "Starting Network"		error=0		# bring up bridge interfaces		bridge_up		# bring up ethernet interfaces		for ifline in ${INTERFACES[@]}; do			if [ "$ifline" = "${ifline#!}" ]; then				ifup $ifline || error=1			fi		done		# bring up bond interfaces		bond_up		# bring up routes		for rtline in "${ROUTES[@]}"; do			if [ "$rtline" = "${rtline#!}" ]; then				rtup $rtline || error=1			fi		done		if [ $error -eq 0 ]; then			add_daemon network			stat_done		else			stat_fail		fi		;;	stop)		#if ck_daemon network; then		#	echo "Network is not running.  Try 'network start'"		#	exit		#fi		# shutdown any profiles started by netcfg (or from NET_PROFILES in rc.conf)		/usr/bin/netcfg --stopall		stat_busy "Stopping Network"		rm_daemon network		error=0		for rtline in "${ROUTES[@]}"; do			if [ "$rtline" = "${rtline#!}" ]; then				rtdown $rtline || error=1			fi		done		for ifline in ${INTERFACES[@]}; do			if [ "$ifline" = "${ifline#!}" ]; then				ifdown $ifline || error=1			fi		done		# bring down bridge interfaces		bridge_down		if [ $error -eq 0 ]; then			stat_done		else			stat_fail		fi		;;	restart)		$0 stop		/bin/sleep 2		$0 start		;;	hotplug_ifup|ifup|ifdown|iflist|rtup|rtdown|rtlist)		$1 $2		;;	*)		echo "usage: $0 {start|stop|restart}"  		echo "       $0 {ifup|ifdown|iflist|rtup|rtdown|rtlist}"esac# vim: set ts=2 noet: