summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Routhier <sar@isc.org>2013-08-30 13:25:12 -0700
committerShawn Routhier <sar@isc.org>2013-08-30 13:25:12 -0700
commitf6dc164f6b01139610b22ace176053efa6dc814c (patch)
tree85438204f5fe3534be605100736585fc868dd534
parent3cb6f9bb3d0cef56b3a4fca7207a27040c2c89b9 (diff)
downloadisc-dhcp-f6dc164f6b01139610b22ace176053efa6dc814c.tar.gz
-n [master]
fixes in openwrt script from the lwds-lite lab as well as some cosmetic changes and updating other scripts to use two double quotes instead of two single quotes for empty zone ids. [rt29843]
-rw-r--r--RELNOTES3
-rwxr-xr-xclient/scripts/bsdos2
-rwxr-xr-xclient/scripts/freebsd2
-rwxr-xr-xclient/scripts/macos2
-rwxr-xr-xclient/scripts/netbsd2
-rw-r--r--client/scripts/openbsd2
-rwxr-xr-xclient/scripts/openwrt54
7 files changed, 39 insertions, 28 deletions
diff --git a/RELNOTES b/RELNOTES
index 4caf76bb..4f485f6c 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -111,6 +111,9 @@ work on other platforms. Please report any problems and suggested fixes to
the release tarballs. To generate this documentation, please use
make devel command in doc directory. [ISC-Bugs #32767]
+- Update client script for use with openwrt.
+ [ISC-Bugs #29843]
+
Changes since 4.2.4
- Correct code to calculate timing values in client to compare
diff --git a/client/scripts/bsdos b/client/scripts/bsdos
index 2cbcdfbf..d69d0d86 100755
--- a/client/scripts/bsdos
+++ b/client/scripts/bsdos
@@ -29,7 +29,7 @@ make_resolv_conf() {
case $nameserver in
fe80:*) zone_id="%$interface";;
FE80:*) zone_id="%$interface";;
- *) zone_id='';;
+ *) zone_id="";;
esac
echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
done
diff --git a/client/scripts/freebsd b/client/scripts/freebsd
index 3f89dee9..6485cc75 100755
--- a/client/scripts/freebsd
+++ b/client/scripts/freebsd
@@ -64,7 +64,7 @@ make_resolv_conf() {
case $nameserver in
fe80:*) zone_id="%$interface";;
FE80:*) zone_id="%$interface";;
- *) zone_id='';;
+ *) zone_id="";;
esac
( echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 )
exit_status=$?
diff --git a/client/scripts/macos b/client/scripts/macos
index 8373820b..cb661921 100755
--- a/client/scripts/macos
+++ b/client/scripts/macos
@@ -34,7 +34,7 @@ make_resolv_conf() {
case $nameserver in
fe80:*) zone_id="%$interface";;
FE80:*) zone_id="%$interface";;
- *) zone_id='';;
+ *) zone_id="";;
esac
( echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6 )
exit_status=$?
diff --git a/client/scripts/netbsd b/client/scripts/netbsd
index 77b0fba2..8a5007e7 100755
--- a/client/scripts/netbsd
+++ b/client/scripts/netbsd
@@ -29,7 +29,7 @@ make_resolv_conf() {
case $nameserver in
fe80:*) zone_id="%$interface";;
FE80:*) zone_id="%$interface";;
- *) zone_id='';;
+ *) zone_id="";;
esac
echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
done
diff --git a/client/scripts/openbsd b/client/scripts/openbsd
index ce22d753..f20d0ff6 100644
--- a/client/scripts/openbsd
+++ b/client/scripts/openbsd
@@ -29,7 +29,7 @@ make_resolv_conf() {
case $nameserver in
fe80:*) zone_id="%$interface";;
FE80:*) zone_id="%$interface";;
- *) zone_id='';;
+ *) zone_id="";;
esac
echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
done
diff --git a/client/scripts/openwrt b/client/scripts/openwrt
index 9d434ad3..8c3059a0 100755
--- a/client/scripts/openwrt
+++ b/client/scripts/openwrt
@@ -1,5 +1,8 @@
#!/bin/sh
+# 'ip' just looks too weird. /sbin/ip looks less weird.
+ip=/usr/sbin/ip
+
make_resolv_conf() {
if [ x"$new_domain_name_servers" != x ]; then
cat /dev/null > /etc/resolv.conf.dhclient
@@ -30,7 +33,7 @@ make_resolv_conf() {
case $nameserver in
fe80:*) zone_id="%$interface";;
FE80:*) zone_id="%$interface";;
- *) zone_id='';;
+ *) zone_id="";;
esac
echo nameserver ${nameserver}$zone_id >> /etc/resolv.conf.dhclient6
done
@@ -39,7 +42,7 @@ make_resolv_conf() {
fi
}
-# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
+# Must be used on exit. Invokes the local dhcp client exit hooks, if any.
exit_with_hooks() {
exit_status=$1
if [ -f /etc/dhclient-exit-hooks ]; then
@@ -73,9 +76,9 @@ fi
if [ x$alias_subnet_mask != x ]; then
alias_subnet_arg="netmask $alias_subnet_mask"
fi
- if [ x$new_interface_mtu != x ]; then
- mtu_arg="mtu $new_interface_mtu"
- fi
+if [ x$new_interface_mtu != x ]; then
+ mtu_arg="mtu $new_interface_mtu"
+fi
if [ x$IF_METRIC != x ]; then
metric_arg="metric $IF_METRIC"
fi
@@ -101,7 +104,7 @@ fi
if [ x$reason = xARPCHECK ] || [ x$reason = xARPSEND ]; then
exit_with_hooks 0
fi
-
+
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
[ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then
current_hostname=`hostname`
@@ -112,13 +115,14 @@ if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
hostname $new_host_name
fi
fi
-
+
if [ x$old_ip_address != x ] && [ x$alias_ip_address != x ] && \
[ x$alias_ip_address != x$old_ip_address ]; then
# Possible new alias. Remove old alias.
ifconfig $interface:0- 0.0.0.0
fi
- if [ x$old_ip_address != x ] && [ x$old_ip_address != x$new_ip_address ]; then
+ if [ x$old_ip_address != x ] && \
+ [ x$old_ip_address != x$new_ip_address ]; then
# IP address changed. Bringing down the interface will delete all routes,
# and clear the ARP cache.
ifconfig $interface 0.0.0.0 down
@@ -128,27 +132,27 @@ if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
[ x$reason = xBOUND ] || [ x$reason = xREBOOT ]; then
ifconfig $interface $new_ip_address $new_subnet_arg \
- $new_broadcast_arg $mtu_arg $metric_arg
+ $new_broadcast_arg $mtu_arg
for router in $new_routers; do
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
route add -host $router dev $interface
fi
- route add default gw $router
+ route add default gw $router $metric_arg dev $interface
done
- else
- # we haven't changed the address, have we changed other options
+ else
+ # we haven't changed the address, have we changed other options
# that we wish to update?
if [ x$new_routers != x ] && [ x$new_routers != x$old_routers ] ; then
# if we've changed routers delete the old and add the new.
$LOGGER "New Routers: $new_routers"
for router in $old_routers; do
- route delete default $router
+ route del default gw $router
done
for router in $new_routers; do
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
route add -host $router dev $interface
fi
- route add default gw $router
+ route add default gw $router $metric_arg dev $interface
done
fi
fi
@@ -184,7 +188,7 @@ if [ x$reason = xTIMEOUT ]; then
ifconfig $interface:0- 0.0.0.0
fi
ifconfig $interface $new_ip_address $new_subnet_arg \
- $new_broadcast_arg $mtu_arg $metric_arg
+ $new_broadcast_arg $mtu_arg
set $new_routers
if ping -q -c 1 $1; then
if [ x$new_ip_address != x$alias_ip_address ] && \
@@ -196,7 +200,7 @@ if [ x$reason = xTIMEOUT ]; then
if [ "x$new_subnet_mask" = "x255.255.255.255" ] ; then
route add -host $router dev $interface
fi
- route add default gw $router
+ route add default gw $router $metric_arg dev $interface
done
make_resolv_conf
exit_with_hooks 0
@@ -211,10 +215,10 @@ fi
if [ x$reason = xPREINIT6 ]; then
# Ensure interface is up.
- ifconfig ${interface} up
+ ${ip} link set ${interface} up
# Remove any stale addresses from aborted clients.
- ip -f inet6 addr flush dev ${interface} scope global
+ ${ip} -f inet6 addr flush dev ${interface} scope global permanent
exit_with_hooks 0
fi
@@ -230,7 +234,8 @@ if [ x$reason = xBOUND6 ]; then
exit_with_hooks 2;
fi
- ifconfig ${interface} inet6 ${new_ip6_address}/${new_ip6_prefixlen} alias
+ ${ip} -f inet6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \
+ dev ${interface} scope global
# Check for nameserver options.
make_resolv_conf
@@ -243,7 +248,8 @@ if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then
exit_with_hooks 2;
fi
- ifconfig ${interface} inet6 ${new_ip6_address}/${new_ip6_prefixlen} alias
+ ${ip} -f inet6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \
+ dev ${interface} scope global
# Make sure nothing has moved around on us.
@@ -257,11 +263,12 @@ if [ x$reason = xRENEW6 ] || [ x$reason = xREBIND6 ]; then
fi
if [ x$reason = xDEPREF6 ]; then
- if [ x${new_ip6_address} = x ] ; then
+ if [ x${new_ip6_prefixlen} = x ] ; then
exit_with_hooks 2;
fi
- ifconfig ${interface} inet6 ${new_ip6_address} deprecated
+ ${ip} -f inet6 addr change ${new_ip6_address}/${new_ip6_prefixlen} \
+ dev ${interface} scope global preferred_lft 0
exit_with_hooks 0
fi
@@ -271,7 +278,8 @@ if [ x$reason = xEXPIRE6 -o x$reason = xRELEASE6 -o x$reason = xSTOP6 ]; then
exit_with_hooks 2;
fi
- ifconfig ${interface} inet6 ${old_ip6_address}/${old_ip6_prefixlen} -alias
+ ${ip} -f inet6 addr del ${old_ip6_address}/${old_ip6_prefixlen} \
+ dev ${interface}
exit_with_hooks 0
fi