mirror of https://github.com/OpenIPC/firmware.git
				
				
				
			
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
| #!/bin/sh
 | |
| 
 | |
| # udhcpc script edited by Tim Riker <Tim@Rikers.org>
 | |
| 
 | |
| [ -z "$1" ] && echo "Error: should be called from udhcpc" && exit 1
 | |
| 
 | |
| RESOLV_CONF="/etc/resolv.conf"
 | |
| [ -e $RESOLV_CONF ] || touch $RESOLV_CONF
 | |
| [ -n "$broadcast" ] && BROADCAST="broadcast $broadcast"
 | |
| [ -n "$subnet" ] && NETMASK="netmask $subnet"
 | |
| # Handle stateful DHCPv6 like DHCPv4
 | |
| [ -n "$ipv6" ] && ip="$ipv6/128"
 | |
| 
 | |
| if [ -z "${IF_WAIT_DELAY}" ]; then
 | |
| 	IF_WAIT_DELAY=10
 | |
| fi
 | |
| 
 | |
| wait_for_ipv6_default_route() {
 | |
| 	printf "Waiting for IPv6 default route to appear"
 | |
| 	while [ $IF_WAIT_DELAY -gt 0 ]; do
 | |
| 		if ip -6 route list | grep -q default; then
 | |
| 			printf "\n"
 | |
| 			return
 | |
| 		fi
 | |
| 		sleep 1
 | |
| 		printf "."
 | |
| 		: $((IF_WAIT_DELAY -= 1))
 | |
| 	done
 | |
| 	printf " timeout!\n"
 | |
| }
 | |
| 
 | |
| case "$1" in
 | |
| 	deconfig)
 | |
| 		/sbin/ifconfig $interface up
 | |
| 		/sbin/ifconfig $interface 0.0.0.0
 | |
| 
 | |
| 		# drop info from this interface
 | |
| 		# resolv.conf may be a symlink to /tmp/, so take care
 | |
| 		TMPFILE=$(mktemp)
 | |
| 		grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE
 | |
| 		cat $TMPFILE > $RESOLV_CONF
 | |
| 		rm -f $TMPFILE
 | |
| 
 | |
| 		if [ -x /usr/sbin/avahi-autoipd ]; then
 | |
| 			/usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface
 | |
| 		fi
 | |
| 		;;
 | |
| 
 | |
| 	leasefail|nak)
 | |
| 		if [ -x /usr/sbin/avahi-autoipd ]; then
 | |
| 			/usr/sbin/avahi-autoipd -c $interface || /usr/sbin/avahi-autoipd -wD $interface --no-chroot
 | |
| 		fi
 | |
| 		;;
 | |
| 
 | |
| 	renew|bound)
 | |
| 		if [ -x /usr/sbin/avahi-autoipd ]; then
 | |
| 			/usr/sbin/avahi-autoipd -c $interface && /usr/sbin/avahi-autoipd -k $interface
 | |
| 		fi
 | |
| 		/sbin/ifconfig $interface $ip $BROADCAST $NETMASK
 | |
| 		if [ -n "$ipv6" ] ; then
 | |
| 			wait_for_ipv6_default_route
 | |
| 		fi
 | |
| 
 | |
| 		if [ -n "$router" ] ; then
 | |
| 			echo "deleting routers"
 | |
| 			while route del default gw 0.0.0.0 dev $interface 2> /dev/null; do
 | |
| 				:
 | |
| 			done
 | |
| 
 | |
| 			for i in $router ; do
 | |
| 				route add default gw $i dev $interface
 | |
| 			done
 | |
| 		fi
 | |
| 
 | |
| 		# drop info from this interface
 | |
| 		# resolv.conf may be a symlink to /tmp/, so take care
 | |
| 		TMPFILE=$(mktemp)
 | |
| 		grep -vE "# $interface\$" $RESOLV_CONF > $TMPFILE
 | |
| 		cat $TMPFILE > $RESOLV_CONF
 | |
| 		rm -f $TMPFILE
 | |
| 
 | |
| 		# prefer rfc3397 domain search list (option 119) if available
 | |
| 		if [ -n "$search" ]; then
 | |
| 			search_list=$search
 | |
| 		elif [ -n "$domain" ]; then
 | |
| 			search_list=$domain
 | |
| 		fi
 | |
| 
 | |
| 		[ -n "$search_list" ] &&
 | |
| 			echo "search $search_list" >> $RESOLV_CONF
 | |
| 
 | |
| 		for i in $dns ; do
 | |
| 			echo adding dns $i
 | |
| 			echo "nameserver $i" >> $RESOLV_CONF
 | |
| 		done
 | |
| 		;;
 | |
| esac
 | |
| 
 | |
| HOOK_DIR="$0.d"
 | |
| for hook in "${HOOK_DIR}/"*; do
 | |
|     [ -f "${hook}" -a -x "${hook}" ] || continue
 | |
|     "${hook}" "${@}"
 | |
| done
 | |
| 
 | |
| exit 0
 |