You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

102 lines
2.8 KiB

#!/bin/sh
set -e
# reduced dhclient-script for the Debian installer
# changes by Joshua Kwan <joshk@triplehelix.org>,
# Bastian Blank <waldi@debian.org>
# dhclient-script for Linux. Dan Halbert, March, 1997.
# Updated for Linux 2.[12] by Brian J. Murrell, January 1999.
# Modified for Debian. Matt Zimmerman and Eloy Paris, December 2003
make_resolv_conf() {
if [ -n "$new_domain_name" -o -n "$new_domain_name_servers" ]; then
local new_resolv_conf=/etc/resolv.conf.dhclient-new
rm -f $new_resolv_conf
if [ -n "$new_domain_name" ]; then
echo "search $new_domain_name" >>$new_resolv_conf
fi
for nameserver in $new_domain_name_servers; do
echo "nameserver $nameserver" >>$new_resolv_conf
done
mv $new_resolv_conf /etc/resolv.conf
fi
}
set_hostname() {
local current_hostname=$(cat /proc/sys/kernel/hostname)
if [ -z "$current_hostname" -o "$current_hostname" = "(none)" ]; then
echo "$new_host_name" > /proc/sys/kernel/hostname
fi
}
if [ -n "$new_broadcast_address" ]; then
new_broadcast_arg="broadcast $new_broadcast_address"
fi
if [ -n "$new_subnet_mask" ]; then
new_mask="/$(ptom $new_subnet_mask)"
fi
if [ -n "$old_subnet_mask" ]; then
old_mask="/$(ptom $old_subnet_mask)"
fi
# Execute the operation
case "$reason" in
MEDIUM|ARPCHECK|ARPSEND)
# Do nothing
;;
PREINIT)
ip link set $interface up
# We need to give the kernel some time to get the interface up.
sleep 1
;;
BOUND|RENEW|REBIND|REBOOT)
set_hostname
if [ -n "$old_ip_address" -a \
"$old_ip_address" != "$new_ip_address" ]; then
# IP address changed. Bringing down the interface will delete all routes,
# and clear the ARP cache.
ip addr del $old_ip_address$old_mask dev $interface
ip link set $interface down
fi
if [ -n "$new_interface_mtu" ]; then
ip link set $interface mtu $new_interface_mtu
fi
if [ -z "$old_ip_address" -o "$old_ip_address" != "$new_ip_address" -o \
"$reason" = "BOUND" -o "$reason" = "REBOOT" ]; then
ip link set $interface up
ip addr flush dev $interface
ip addr add $new_ip_address$new_mask $new_broadcast_arg dev $interface
for router in $new_routers; do
ip route add default via $router
done
fi
make_resolv_conf
;;
EXPIRE|FAIL|RELEASE|STOP)
if [ -n "$old_ip_address" ]; then
# Shut down interface, which will delete routes and clear arp cache.
ip addr flush dev $interface
ip link set $interface down
fi
;;
TIMEOUT)
ip link set $interface down
;;
esac
exit 0