head	1.4;
access;
symbols
	perseant-exfatfs-base-20250801:1.4
	perseant-exfatfs-base-20240630:1.4
	perseant-exfatfs:1.4.0.6
	perseant-exfatfs-base:1.4
	netbsd-8-3-RELEASE:1.3
	cjep_sun2x:1.4.0.4
	cjep_sun2x-base:1.4
	cjep_staticlib_x-base1:1.4
	cjep_staticlib_x:1.4.0.2
	cjep_staticlib_x-base:1.4
	phil-wifi-20200421:1.4
	phil-wifi-20200411:1.4
	phil-wifi-20200406:1.4
	netbsd-8-2-RELEASE:1.3
	netbsd-8-1-RELEASE:1.3
	netbsd-8-1-RC1:1.3
	pgoyette-compat-merge-20190127:1.3.12.1
	pgoyette-compat-20190127:1.4
	pgoyette-compat-20190118:1.4
	pgoyette-compat-1226:1.4
	pgoyette-compat-1126:1.4
	pgoyette-compat-1020:1.4
	pgoyette-compat-0930:1.4
	pgoyette-compat-0906:1.4
	netbsd-7-2-RELEASE:1.1
	pgoyette-compat-0728:1.4
	netbsd-8-0-RELEASE:1.3
	pgoyette-compat-0625:1.4
	netbsd-8-0-RC2:1.3
	pgoyette-compat-0521:1.4
	pgoyette-compat-0502:1.4
	pgoyette-compat-0422:1.4
	netbsd-8-0-RC1:1.3
	pgoyette-compat-0415:1.4
	pgoyette-compat-0407:1.3
	pgoyette-compat-0330:1.3
	pgoyette-compat-0322:1.3
	pgoyette-compat-0315:1.3
	netbsd-7-1-2-RELEASE:1.1
	pgoyette-compat:1.3.0.12
	pgoyette-compat-base:1.3
	netbsd-7-1-1-RELEASE:1.1
	matt-nb8-mediatek:1.3.0.10
	matt-nb8-mediatek-base:1.3
	perseant-stdc-iso10646:1.3.0.8
	perseant-stdc-iso10646-base:1.3
	netbsd-8:1.3.0.6
	netbsd-8-base:1.3
	prg-localcount2-base3:1.3
	prg-localcount2-base2:1.3
	prg-localcount2-base1:1.3
	prg-localcount2:1.3.0.4
	prg-localcount2-base:1.3
	pgoyette-localcount-20170426:1.3
	bouyer-socketcan-base1:1.3
	pgoyette-localcount-20170320:1.3
	netbsd-7-1:1.1.0.18
	netbsd-7-1-RELEASE:1.1
	netbsd-7-1-RC2:1.1
	netbsd-7-nhusb-base-20170116:1.1
	bouyer-socketcan:1.3.0.2
	bouyer-socketcan-base:1.3
	pgoyette-localcount-20170107:1.3
	netbsd-7-1-RC1:1.1
	pgoyette-localcount-20161104:1.2
	netbsd-7-0-2-RELEASE:1.1
	localcount-20160914:1.2
	netbsd-7-nhusb:1.1.0.16
	netbsd-7-nhusb-base:1.1
	pgoyette-localcount-20160806:1.2
	pgoyette-localcount-20160726:1.2
	pgoyette-localcount:1.2.0.2
	pgoyette-localcount-base:1.2
	netbsd-7-0-1-RELEASE:1.1
	netbsd-7-0:1.1.0.14
	netbsd-7-0-RELEASE:1.1
	netbsd-7-0-RC3:1.1
	netbsd-7-0-RC2:1.1
	netbsd-7-0-RC1:1.1
	netbsd-7:1.1.0.12
	netbsd-7-base:1.1
	yamt-pagecache:1.1.0.10
	yamt-pagecache-base9:1.1
	tls-earlyentropy:1.1.0.8
	tls-earlyentropy-base:1.1
	riastradh-xf86-video-intel-2-7-1-pre-2-21-15:1.1
	riastradh-drm2-base3:1.1
	riastradh-drm2-base2:1.1
	riastradh-drm2-base1:1.1
	riastradh-drm2:1.1.0.6
	riastradh-drm2-base:1.1
	tls-maxphys-base:1.1
	tls-maxphys:1.1.0.4
	khorben-n900:1.1.0.2;
locks; strict;
comment	@# @;


1.4
date	2018.04.07.22.39.53;	author christos;	state dead;
branches;
next	1.3;
commitid	GG8y5M7UQEDETyxA;

1.3
date	2016.11.27.19.04.40;	author maya;	state Exp;
branches
	1.3.12.1;
next	1.2;
commitid	pgAM8DLhOSmMDNvz;

1.2
date	2015.02.26.09.59.55;	author roy;	state Exp;
branches
	1.2.2.1;
next	1.1;
commitid	EemuFmIlVyhUcvby;

1.1
date	2013.03.24.15.54.30;	author christos;	state Exp;
branches
	1.1.4.1
	1.1.10.1;
next	;

1.3.12.1
date	2018.04.16.01.58.07;	author pgoyette;	state dead;
branches;
next	;
commitid	qk3nktk0szmTIByA;

1.2.2.1
date	2017.01.07.08.53.48;	author pgoyette;	state Exp;
branches;
next	;
commitid	uEL0C1YuiJrlV0Bz;

1.1.4.1
date	2013.03.24.15.54.30;	author tls;	state dead;
branches;
next	1.1.4.2;
commitid	OnlO1cBgtQRcIHUw;

1.1.4.2
date	2013.06.23.06.26.27;	author tls;	state Exp;
branches;
next	;
commitid	OnlO1cBgtQRcIHUw;

1.1.10.1
date	2013.03.24.15.54.30;	author yamt;	state dead;
branches;
next	1.1.10.2;
commitid	71DOv9lBdoc77yBx;

1.1.10.2
date	2014.05.22.15.44.30;	author yamt;	state Exp;
branches;
next	;
commitid	71DOv9lBdoc77yBx;


desc
@@


1.4
log
@moved dhcp to mpl
@
text
@#!/bin/sh
#
# $NetBSD: dhclient-script,v 1.3 2016/11/27 19:04:40 maya Exp $

ENTERHOOKS=/etc/dhclient-enter-hooks
EXITHOOKS=/etc/dhclient-exit-hooks
RESOLV=/etc/resolv.conf
SIGNATURE="# Created by dhclient from"
INTSIG="$SIGNATURE $interface"

echo_resolv_conf() {
	echo "$INTSIG"
	echo search $new_domain_name
	for nameserver in $new_domain_name_servers; do
		echo nameserver $nameserver
	done
}

make_resolv_conf() {
	if [ ! -z "$new_domain_name_servers" ]; then
		if [ -x /sbin/resolvconf ]; then
			echo_resolv_conf | /sbin/resolvconf -a $interface
		else
			if [ -f $RESOLV ]; then
				while read line; do
					case $line in
					"$SIGNATURE"*)
						;;
					*)
						mv $RESOLV $RESOLV.save;;
					esac
					break
				done < $RESOLV
			fi
			echo_resolv_conf > $RESOLV
		fi
	fi
}

restore_resolv_conf() {
	if [ -x /sbin/resolvconf ]; then
		/sbin/resolvconf -d $interface
	elif [ -f $RESOLV.save -a -f $RESOLV ]; then
		while read line; do
			case $line in
			"$INTSIG"*)
				mv $RESOLV.save $RESOLV;;
			esac
			break
		done < $RESOLV
	fi
}

# Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
	exit_status=$1
	if [ -f "$EXITHOOKS" ]; then
		. "$EXITHOOKS"
	fi
	# probably should do something with exit status of the local script
	exit $exit_status
}


add_new_routes() {
	for router in $new_routers; do
		route add default $router
	done >/dev/null 2>&1

	set -- $new_static_routes
	while [ $# -gt 1 ]; do
		route add $1 $2
		shift; shift
	done
}

delete_old_routes() {
	for router in $old_routers; do
		route delete default $router
	done >/dev/null 2>&1

	set -- $old_static_routes
	while [ $# -gt 1 ]; do
		route delete $1 $2
		shift; shift
	done

	route -n flush -inet -host
}

# Invoke the local dhcp client enter hooks, if they exist.
if [ -f $ENTERHOOKS ]; then
	exit_status=0
	. $ENTERHOOKS
	# allow the local script to abort processing of this state
	# local script must set exit_status variable to nonzero.
	if [ $exit_status -ne 0 ]; then
		exit $exit_status
	fi
fi

#if [ ! -z "$new_host_name" ]; then
#	echo New Host Name: $new_host_name
#fi
#
#if [ ! -z "$new_nis_domain" ]; then
#	echo New NIS Domain: $new_nis_domain
#fi
#
#if [ ! -z "$new_network_number" ]; then
#	echo New Network Number: $new_network_number
#fi

if [ ! -z "$new_broadcast_address" ]; then
#	echo New Broadcast Address: $new_broadcast_address
	new_broadcast_arg="broadcast $new_broadcast_address"
fi

if [ ! -z "$old_broadcast_address" ]; then
	old_broadcast_arg="broadcast $old_broadcast_address"
fi

if [ ! -z "$new_subnet_mask" ]; then
	new_netmask_arg="netmask $new_subnet_mask"
fi

if [ ! -z "$old_subnet_mask" ]; then
	old_netmask_arg="netmask $old_subnet_mask"
fi

if [ ! -z "$alias_subnet_mask" ]; then
	alias_subnet_arg="netmask $alias_subnet_mask"
fi

case "$reason" in
MEDIUM)
	test -z "$medium" && exit_with_hooks 0
	eval "ifconfig $interface $medium"
	eval "ifconfig $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1

	sleep 1

	exit_with_hooks 0
	;;

PREINIT)
	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet \
		    -alias $alias_ip_address >/dev/null 2>&1
	fi

	ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
	    broadcast 255.255.255.255 up

	exit_with_hooks 0
	;;

ARPCHECK|ARPSEND)
	exit_with_hooks 0
	;;

BOUND|RENEW|REBIND|REBOOT)
	if [ ! -z "$new_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			domainname $new_nis_domain
		fi
	fi

	if type hostname > /dev/null 2>&1; then
		if [ \( -z "$current_hostname" \) -o \
		    \( "x$new_host_name" = "x$old_hostname" \) ]; then
			current_hostname=`hostname`
		fi
		if [ \( -z "$current_hostname" \) -o \
		    \( "x$new_host_name" != "x$old_hostname" \) ]; then
			hostname $new_host_name
		fi
	fi
    
	if [ \( ! -z "$old_ip_address" \) -a \( ! -z "$alias_ip_address" \) -a \
	    \( "x$alias_ip_address" != "x$old_ip_address" \) ]; then
		ifconfig $interface inet \
		    -alias $alias_ip_address > /dev/null 2>&1
	fi

	if [ \( ! -z "$old_ip_address" \) -a \
	    \( "x$old_ip_address" != "x$new_ip_address" \) ]; then
		eval "ifconfig $interface inet -alias $old_ip_address $medium"
		delete_old_routes
	fi

	if [ \( -z "$old_ip_address" \) -o \
	    \( "x$old_ip_address" != "x$new_ip_address" \) -o \
	    \( "x$reason" = "xBOUND" \) -o \( "x$reason" = "xREBOOT" \) ]; then
		eval "ifconfig $interface inet $new_ip_address \
		    $new_netmask_arg $new_broadcast_arg $medium"
		add_new_routes
	fi

	if [ \( ! -z "$alias_ip_address" \) -a \
	    \( "x$new_ip_address" != "x$alias_ip_address" \) ]; then
		ifconfig $interface inet alias $alias_ip_address \
		    $alias_subnet_arg
	fi
	make_resolv_conf
	exit_with_hooks 0
	;;

EXPIRE|FAIL|RELEASE|STOP)
	if [ ! -z "$old_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			# delete the old nis domain name
			domainname ""
		fi
	fi

	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet -alias $alias_ip_address 
	fi > /dev/null 2>&1

	if [ ! -z "$old_ip_address" ]; then
		eval "ifconfig $interface inet -alias $old_ip_address $medium"
		delete_old_routes

	fi

	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet alias $alias_ip_address \
		    $alias_subnet_arg
	fi

	restore_resolv_conf
	exit_with_hooks 0
	;;

TIMEOUT)
	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet -alias $alias_ip_address
	fi > /dev/null 2>&1

	if [ ! -z "$new_host_name" ]; then
		if type hostname > /dev/null 2>&1; then
			hostname $new_host_name
		fi
	fi

	if [ ! -z "$new_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			domainname $new_nis_domain
		fi
	fi

	eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \
	    $new_broadcast_arg $medium"
	sleep 1

	if [ ! -z "$new_routers" ]; then
		set -- $new_routers
		if ping -n -q -c 1 -w 1 $1; then
			if [ \( ! -z "$alias_ip_address" \) -a \
			    \( "x$new_ip_address" != "x$alias_ip_address" \) ]
			then
				ifconfig $interface inet alias \
				    $alias_ip_address $alias_subnet_arg
			fi

			add_new_routes
			make_resolv_conf
			exit_with_hooks 0
		fi
	fi

	eval "ifconfig $interface inet -alias $new_ip_address $medium"

	delete_old_routes

	exit_with_hooks 1
	;;
*)
	exit_with_hooks 0
	;;
esac
@


1.3
log
@Do not attempt to pass -llinfo to route.

llinfo was removed, and the command fails because of it.
@
text
@d3 1
a3 1
# $NetBSD: dhclient-script,v 1.2 2015/02/26 09:59:55 roy Exp $
@


1.3.12.1
log
@Sync with HEAD, resolve some conflicts
@
text
@d3 1
a3 1
# $NetBSD: dhclient-script,v 1.3 2016/11/27 19:04:40 maya Exp $
@


1.2
log
@No longer a need to add local routes for the address.
@
text
@d3 1
a3 1
# $NetBSD: dhclient-script,v 1.1 2013/03/24 15:54:30 christos Exp $
d88 1
a88 1
	route -n flush -inet -llinfo -host
@


1.2.2.1
log
@Sync with HEAD.  (Note that most of these changes are simply $NetBSD$
tag issues.)
@
text
@d3 1
a3 1
# $NetBSD: dhclient-script,v 1.3 2016/11/27 19:04:40 maya Exp $
d88 1
a88 1
	route -n flush -inet -host
@


1.1
log
@Build gluons
NB: This will not link yet, until I commit all the bind changes.
@
text
@d3 1
a3 1
# $NetBSD: dhclient-script,v 1.13 2009/11/21 07:53:59 roy Exp $
a149 1
		route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
a183 1
		route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
a188 2
		route delete $old_ip_address 127.0.0.1 >/dev/null 2>&1

a196 2
		route add $new_ip_address 127.0.0.1 >/dev/null 2>&1

a203 1
		route add $alias_ip_address 127.0.0.1
a218 1
		route delete $alias_ip_address 127.0.0.1
a222 1
		route delete $old_ip_address 127.0.0.1 >/dev/null 2>&1
a229 1
		route add $alias_ip_address 127.0.0.1
a238 1
		route delete $alias_ip_address 127.0.0.1
a264 1
				route add $alias_ip_address 127.0.0.1
a266 2
			route add $new_ip_address 127.0.0.1 >/dev/null 2>&1

@


1.1.10.1
log
@file dhclient-script was added on branch yamt-pagecache on 2014-05-22 15:44:30 +0000
@
text
@d1 296
@


1.1.10.2
log
@sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs.  ("Protocol error: too many arguments")
@
text
@a0 296
#!/bin/sh
#
# $NetBSD$

ENTERHOOKS=/etc/dhclient-enter-hooks
EXITHOOKS=/etc/dhclient-exit-hooks
RESOLV=/etc/resolv.conf
SIGNATURE="# Created by dhclient from"
INTSIG="$SIGNATURE $interface"

echo_resolv_conf() {
	echo "$INTSIG"
	echo search $new_domain_name
	for nameserver in $new_domain_name_servers; do
		echo nameserver $nameserver
	done
}

make_resolv_conf() {
	if [ ! -z "$new_domain_name_servers" ]; then
		if [ -x /sbin/resolvconf ]; then
			echo_resolv_conf | /sbin/resolvconf -a $interface
		else
			if [ -f $RESOLV ]; then
				while read line; do
					case $line in
					"$SIGNATURE"*)
						;;
					*)
						mv $RESOLV $RESOLV.save;;
					esac
					break
				done < $RESOLV
			fi
			echo_resolv_conf > $RESOLV
		fi
	fi
}

restore_resolv_conf() {
	if [ -x /sbin/resolvconf ]; then
		/sbin/resolvconf -d $interface
	elif [ -f $RESOLV.save -a -f $RESOLV ]; then
		while read line; do
			case $line in
			"$INTSIG"*)
				mv $RESOLV.save $RESOLV;;
			esac
			break
		done < $RESOLV
	fi
}

# Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
	exit_status=$1
	if [ -f "$EXITHOOKS" ]; then
		. "$EXITHOOKS"
	fi
	# probably should do something with exit status of the local script
	exit $exit_status
}


add_new_routes() {
	for router in $new_routers; do
		route add default $router
	done >/dev/null 2>&1

	set -- $new_static_routes
	while [ $# -gt 1 ]; do
		route add $1 $2
		shift; shift
	done
}

delete_old_routes() {
	for router in $old_routers; do
		route delete default $router
	done >/dev/null 2>&1

	set -- $old_static_routes
	while [ $# -gt 1 ]; do
		route delete $1 $2
		shift; shift
	done

	route -n flush -inet -llinfo -host
}

# Invoke the local dhcp client enter hooks, if they exist.
if [ -f $ENTERHOOKS ]; then
	exit_status=0
	. $ENTERHOOKS
	# allow the local script to abort processing of this state
	# local script must set exit_status variable to nonzero.
	if [ $exit_status -ne 0 ]; then
		exit $exit_status
	fi
fi

#if [ ! -z "$new_host_name" ]; then
#	echo New Host Name: $new_host_name
#fi
#
#if [ ! -z "$new_nis_domain" ]; then
#	echo New NIS Domain: $new_nis_domain
#fi
#
#if [ ! -z "$new_network_number" ]; then
#	echo New Network Number: $new_network_number
#fi

if [ ! -z "$new_broadcast_address" ]; then
#	echo New Broadcast Address: $new_broadcast_address
	new_broadcast_arg="broadcast $new_broadcast_address"
fi

if [ ! -z "$old_broadcast_address" ]; then
	old_broadcast_arg="broadcast $old_broadcast_address"
fi

if [ ! -z "$new_subnet_mask" ]; then
	new_netmask_arg="netmask $new_subnet_mask"
fi

if [ ! -z "$old_subnet_mask" ]; then
	old_netmask_arg="netmask $old_subnet_mask"
fi

if [ ! -z "$alias_subnet_mask" ]; then
	alias_subnet_arg="netmask $alias_subnet_mask"
fi

case "$reason" in
MEDIUM)
	test -z "$medium" && exit_with_hooks 0
	eval "ifconfig $interface $medium"
	eval "ifconfig $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1

	sleep 1

	exit_with_hooks 0
	;;

PREINIT)
	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet \
		    -alias $alias_ip_address >/dev/null 2>&1
		route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
	fi

	ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
	    broadcast 255.255.255.255 up

	exit_with_hooks 0
	;;

ARPCHECK|ARPSEND)
	exit_with_hooks 0
	;;

BOUND|RENEW|REBIND|REBOOT)
	if [ ! -z "$new_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			domainname $new_nis_domain
		fi
	fi

	if type hostname > /dev/null 2>&1; then
		if [ \( -z "$current_hostname" \) -o \
		    \( "x$new_host_name" = "x$old_hostname" \) ]; then
			current_hostname=`hostname`
		fi
		if [ \( -z "$current_hostname" \) -o \
		    \( "x$new_host_name" != "x$old_hostname" \) ]; then
			hostname $new_host_name
		fi
	fi
    
	if [ \( ! -z "$old_ip_address" \) -a \( ! -z "$alias_ip_address" \) -a \
	    \( "x$alias_ip_address" != "x$old_ip_address" \) ]; then
		ifconfig $interface inet \
		    -alias $alias_ip_address > /dev/null 2>&1
		route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
	fi

	if [ \( ! -z "$old_ip_address" \) -a \
	    \( "x$old_ip_address" != "x$new_ip_address" \) ]; then
		eval "ifconfig $interface inet -alias $old_ip_address $medium"
		route delete $old_ip_address 127.0.0.1 >/dev/null 2>&1

		delete_old_routes
	fi

	if [ \( -z "$old_ip_address" \) -o \
	    \( "x$old_ip_address" != "x$new_ip_address" \) -o \
	    \( "x$reason" = "xBOUND" \) -o \( "x$reason" = "xREBOOT" \) ]; then
		eval "ifconfig $interface inet $new_ip_address \
		    $new_netmask_arg $new_broadcast_arg $medium"
		route add $new_ip_address 127.0.0.1 >/dev/null 2>&1

		add_new_routes
	fi

	if [ \( ! -z "$alias_ip_address" \) -a \
	    \( "x$new_ip_address" != "x$alias_ip_address" \) ]; then
		ifconfig $interface inet alias $alias_ip_address \
		    $alias_subnet_arg
		route add $alias_ip_address 127.0.0.1
	fi
	make_resolv_conf
	exit_with_hooks 0
	;;

EXPIRE|FAIL|RELEASE|STOP)
	if [ ! -z "$old_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			# delete the old nis domain name
			domainname ""
		fi
	fi

	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet -alias $alias_ip_address 
		route delete $alias_ip_address 127.0.0.1
	fi > /dev/null 2>&1

	if [ ! -z "$old_ip_address" ]; then
		eval "ifconfig $interface inet -alias $old_ip_address $medium"
		route delete $old_ip_address 127.0.0.1 >/dev/null 2>&1
		delete_old_routes

	fi

	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet alias $alias_ip_address \
		    $alias_subnet_arg
		route add $alias_ip_address 127.0.0.1
	fi

	restore_resolv_conf
	exit_with_hooks 0
	;;

TIMEOUT)
	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet -alias $alias_ip_address
		route delete $alias_ip_address 127.0.0.1
	fi > /dev/null 2>&1

	if [ ! -z "$new_host_name" ]; then
		if type hostname > /dev/null 2>&1; then
			hostname $new_host_name
		fi
	fi

	if [ ! -z "$new_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			domainname $new_nis_domain
		fi
	fi

	eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \
	    $new_broadcast_arg $medium"
	sleep 1

	if [ ! -z "$new_routers" ]; then
		set -- $new_routers
		if ping -n -q -c 1 -w 1 $1; then
			if [ \( ! -z "$alias_ip_address" \) -a \
			    \( "x$new_ip_address" != "x$alias_ip_address" \) ]
			then
				ifconfig $interface inet alias \
				    $alias_ip_address $alias_subnet_arg
				route add $alias_ip_address 127.0.0.1
			fi

			route add $new_ip_address 127.0.0.1 >/dev/null 2>&1

			add_new_routes
			make_resolv_conf
			exit_with_hooks 0
		fi
	fi

	eval "ifconfig $interface inet -alias $new_ip_address $medium"

	delete_old_routes

	exit_with_hooks 1
	;;
*)
	exit_with_hooks 0
	;;
esac
@


1.1.4.1
log
@file dhclient-script was added on branch tls-maxphys on 2013-06-23 06:26:27 +0000
@
text
@d1 296
@


1.1.4.2
log
@resync from head
@
text
@a0 296
#!/bin/sh
#
# $NetBSD$

ENTERHOOKS=/etc/dhclient-enter-hooks
EXITHOOKS=/etc/dhclient-exit-hooks
RESOLV=/etc/resolv.conf
SIGNATURE="# Created by dhclient from"
INTSIG="$SIGNATURE $interface"

echo_resolv_conf() {
	echo "$INTSIG"
	echo search $new_domain_name
	for nameserver in $new_domain_name_servers; do
		echo nameserver $nameserver
	done
}

make_resolv_conf() {
	if [ ! -z "$new_domain_name_servers" ]; then
		if [ -x /sbin/resolvconf ]; then
			echo_resolv_conf | /sbin/resolvconf -a $interface
		else
			if [ -f $RESOLV ]; then
				while read line; do
					case $line in
					"$SIGNATURE"*)
						;;
					*)
						mv $RESOLV $RESOLV.save;;
					esac
					break
				done < $RESOLV
			fi
			echo_resolv_conf > $RESOLV
		fi
	fi
}

restore_resolv_conf() {
	if [ -x /sbin/resolvconf ]; then
		/sbin/resolvconf -d $interface
	elif [ -f $RESOLV.save -a -f $RESOLV ]; then
		while read line; do
			case $line in
			"$INTSIG"*)
				mv $RESOLV.save $RESOLV;;
			esac
			break
		done < $RESOLV
	fi
}

# Must be used on exit.   Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
	exit_status=$1
	if [ -f "$EXITHOOKS" ]; then
		. "$EXITHOOKS"
	fi
	# probably should do something with exit status of the local script
	exit $exit_status
}


add_new_routes() {
	for router in $new_routers; do
		route add default $router
	done >/dev/null 2>&1

	set -- $new_static_routes
	while [ $# -gt 1 ]; do
		route add $1 $2
		shift; shift
	done
}

delete_old_routes() {
	for router in $old_routers; do
		route delete default $router
	done >/dev/null 2>&1

	set -- $old_static_routes
	while [ $# -gt 1 ]; do
		route delete $1 $2
		shift; shift
	done

	route -n flush -inet -llinfo -host
}

# Invoke the local dhcp client enter hooks, if they exist.
if [ -f $ENTERHOOKS ]; then
	exit_status=0
	. $ENTERHOOKS
	# allow the local script to abort processing of this state
	# local script must set exit_status variable to nonzero.
	if [ $exit_status -ne 0 ]; then
		exit $exit_status
	fi
fi

#if [ ! -z "$new_host_name" ]; then
#	echo New Host Name: $new_host_name
#fi
#
#if [ ! -z "$new_nis_domain" ]; then
#	echo New NIS Domain: $new_nis_domain
#fi
#
#if [ ! -z "$new_network_number" ]; then
#	echo New Network Number: $new_network_number
#fi

if [ ! -z "$new_broadcast_address" ]; then
#	echo New Broadcast Address: $new_broadcast_address
	new_broadcast_arg="broadcast $new_broadcast_address"
fi

if [ ! -z "$old_broadcast_address" ]; then
	old_broadcast_arg="broadcast $old_broadcast_address"
fi

if [ ! -z "$new_subnet_mask" ]; then
	new_netmask_arg="netmask $new_subnet_mask"
fi

if [ ! -z "$old_subnet_mask" ]; then
	old_netmask_arg="netmask $old_subnet_mask"
fi

if [ ! -z "$alias_subnet_mask" ]; then
	alias_subnet_arg="netmask $alias_subnet_mask"
fi

case "$reason" in
MEDIUM)
	test -z "$medium" && exit_with_hooks 0
	eval "ifconfig $interface $medium"
	eval "ifconfig $interface inet -alias 0.0.0.0 $medium" >/dev/null 2>&1

	sleep 1

	exit_with_hooks 0
	;;

PREINIT)
	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet \
		    -alias $alias_ip_address >/dev/null 2>&1
		route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
	fi

	ifconfig $interface inet 0.0.0.0 netmask 0.0.0.0 \
	    broadcast 255.255.255.255 up

	exit_with_hooks 0
	;;

ARPCHECK|ARPSEND)
	exit_with_hooks 0
	;;

BOUND|RENEW|REBIND|REBOOT)
	if [ ! -z "$new_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			domainname $new_nis_domain
		fi
	fi

	if type hostname > /dev/null 2>&1; then
		if [ \( -z "$current_hostname" \) -o \
		    \( "x$new_host_name" = "x$old_hostname" \) ]; then
			current_hostname=`hostname`
		fi
		if [ \( -z "$current_hostname" \) -o \
		    \( "x$new_host_name" != "x$old_hostname" \) ]; then
			hostname $new_host_name
		fi
	fi
    
	if [ \( ! -z "$old_ip_address" \) -a \( ! -z "$alias_ip_address" \) -a \
	    \( "x$alias_ip_address" != "x$old_ip_address" \) ]; then
		ifconfig $interface inet \
		    -alias $alias_ip_address > /dev/null 2>&1
		route delete $alias_ip_address 127.0.0.1 > /dev/null 2>&1
	fi

	if [ \( ! -z "$old_ip_address" \) -a \
	    \( "x$old_ip_address" != "x$new_ip_address" \) ]; then
		eval "ifconfig $interface inet -alias $old_ip_address $medium"
		route delete $old_ip_address 127.0.0.1 >/dev/null 2>&1

		delete_old_routes
	fi

	if [ \( -z "$old_ip_address" \) -o \
	    \( "x$old_ip_address" != "x$new_ip_address" \) -o \
	    \( "x$reason" = "xBOUND" \) -o \( "x$reason" = "xREBOOT" \) ]; then
		eval "ifconfig $interface inet $new_ip_address \
		    $new_netmask_arg $new_broadcast_arg $medium"
		route add $new_ip_address 127.0.0.1 >/dev/null 2>&1

		add_new_routes
	fi

	if [ \( ! -z "$alias_ip_address" \) -a \
	    \( "x$new_ip_address" != "x$alias_ip_address" \) ]; then
		ifconfig $interface inet alias $alias_ip_address \
		    $alias_subnet_arg
		route add $alias_ip_address 127.0.0.1
	fi
	make_resolv_conf
	exit_with_hooks 0
	;;

EXPIRE|FAIL|RELEASE|STOP)
	if [ ! -z "$old_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			# delete the old nis domain name
			domainname ""
		fi
	fi

	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet -alias $alias_ip_address 
		route delete $alias_ip_address 127.0.0.1
	fi > /dev/null 2>&1

	if [ ! -z "$old_ip_address" ]; then
		eval "ifconfig $interface inet -alias $old_ip_address $medium"
		route delete $old_ip_address 127.0.0.1 >/dev/null 2>&1
		delete_old_routes

	fi

	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet alias $alias_ip_address \
		    $alias_subnet_arg
		route add $alias_ip_address 127.0.0.1
	fi

	restore_resolv_conf
	exit_with_hooks 0
	;;

TIMEOUT)
	if [ ! -z "$alias_ip_address" ]; then
		ifconfig $interface inet -alias $alias_ip_address
		route delete $alias_ip_address 127.0.0.1
	fi > /dev/null 2>&1

	if [ ! -z "$new_host_name" ]; then
		if type hostname > /dev/null 2>&1; then
			hostname $new_host_name
		fi
	fi

	if [ ! -z "$new_nis_domain" ]; then
		if type domainname > /dev/null 2>&1; then
			domainname $new_nis_domain
		fi
	fi

	eval "ifconfig $interface inet $new_ip_address $new_netmask_arg \
	    $new_broadcast_arg $medium"
	sleep 1

	if [ ! -z "$new_routers" ]; then
		set -- $new_routers
		if ping -n -q -c 1 -w 1 $1; then
			if [ \( ! -z "$alias_ip_address" \) -a \
			    \( "x$new_ip_address" != "x$alias_ip_address" \) ]
			then
				ifconfig $interface inet alias \
				    $alias_ip_address $alias_subnet_arg
				route add $alias_ip_address 127.0.0.1
			fi

			route add $new_ip_address 127.0.0.1 >/dev/null 2>&1

			add_new_routes
			make_resolv_conf
			exit_with_hooks 0
		fi
	fi

	eval "ifconfig $interface inet -alias $new_ip_address $medium"

	delete_old_routes

	exit_with_hooks 1
	;;
*)
	exit_with_hooks 0
	;;
esac
@


