1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| | Implement resolvconf support
Due to the potential for multiple sources contenting for /etc/resol.conf
control, this patch replaces direct file munging with resolvconf indirection.
--- a/client/scripts/linux 1970-01-01 09:00:01.000000000 +0900
+++ b/client/scripts/linux 1970-01-01 09:00:01.000000000 +0900
@@ -36,11 +36,11 @@
# This updated version mostly follows Debian script by Andrew Pollock et al.
make_resolv_conf() {
local new_resolv_conf
+ new_resolv_conf=$(mktemp)
# DHCPv4
if [ -n "$new_domain_search" ] || [ -n "$new_domain_name" ] ||
- [ -n "$new_domain_name_servers" ]; then
- new_resolv_conf=/etc/resolv.conf.dhclient-new
+ [ -n "$new_domain_name_servers" ]; then
rm -f $new_resolv_conf
if [ -n "$new_domain_name" ]; then
@@ -70,17 +70,12 @@
echo nameserver $nameserver >>$new_resolv_conf
done
else # keep 'old' nameservers
- sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p /etc/resolv.conf >>$new_resolv_conf
+ resolvconf -l "$interface.dhcp" | sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p >>$new_resolv_conf
fi
- if [ -f /etc/resolv.conf ]; then
- chown --reference=/etc/resolv.conf $new_resolv_conf
- chmod --reference=/etc/resolv.conf $new_resolv_conf
- fi
- mv -f $new_resolv_conf /etc/resolv.conf
+ resolvconf -a "$interface.dhpc" <"$new_resolv_conf"
# DHCPv6
elif [ -n "$new_dhcp6_domain_search" ] || [ -n "$new_dhcp6_name_servers" ]; then
- new_resolv_conf=/etc/resolv.conf.dhclient-new
rm -f $new_resolv_conf
if [ -n "$new_dhcp6_domain_search" ]; then
@@ -97,14 +92,10 @@
echo nameserver $nameserver >>$new_resolv_conf
done
else # keep 'old' nameservers
- sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p /etc/resolv.conf >>$new_resolv_conf
+ resolvconf -l "$interface.dhcp6" | sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p >>$new_resolv_conf
fi
- if [ -f /etc/resolv.conf ]; then
- chown --reference=/etc/resolv.conf $new_resolv_conf
- chmod --reference=/etc/resolv.conf $new_resolv_conf
- fi
- mv -f $new_resolv_conf /etc/resolv.conf
+ resolvconf -a "$interface.dhpc6" <"$new_resolv_conf"
fi
}
|