Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(874)

Side by Side Diff: dhcpcd-hooks/20-resolv.conf

Issue 2428004: Overhaul dhcpcd for chrome os use (Closed) Base URL: ssh://git@chromiumos-git//dhcpcd.git
Patch Set: purge hooks from configure to silence complaint Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « dhcpcd-hooks/10-mtu ('k') | dhcpcd-hooks/29-lookup-hostname » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Generate /etc/resolv.conf
2 # Support resolvconf(8) if available
3 # We can merge other dhcpcd resolv.conf files into one like resolvconf,
4 # but resolvconf is preferred as other applications like VPN clients
5 # can readily hook into it.
6 # Also, resolvconf can configure local nameservers such as bind
7 # or dnsmasq. This is important as the libc resolver isn't that powerful.
8
9 resolv_conf_dir="$state_dir/resolv.conf"
10
11 build_resolv_conf()
12 {
13 local cf="$state_dir/resolv.conf.$interface"
14 local interfaces= header= search= srvs= servers= x=
15
16 # Build a list of interfaces
17 interfaces=$(list_interfaces "$resolv_conf_dir")
18
19 # Build the resolv.conf
20 if [ -n "$interfaces" ]; then
21 # Build the header
22 for x in ${interfaces}; do
23 header="$header${header:+, }$x"
24 done
25
26 # Build the search list
27 domain=$(cd "$resolv_conf_dir"; \
28 key_get_value "domain " ${interfaces})
29 search=$(cd "$resolv_conf_dir"; \
30 key_get_value "search " ${interfaces})
31 set -- ${domain}
32 unset domain
33 if [ -n "$2" ]; then
34 search="$search $@"
35 elif [ -n "$1" ]; then
36 domain="domain $1\n"
37 fi
38 [ -n "$search" ] && search="search $(uniqify $search)\n"
39
40 # Build the nameserver list
41 srvs=$(cd "$resolv_conf_dir"; \
42 key_get_value "nameserver " ${interfaces})
43 for x in $(uniqify ${srvs}); do
44 servers="${servers}nameserver $x\n"
45 done
46 fi
47 header="$signature_base${header:+ $from }$header"
48
49 # Assemble resolv.conf using our head and tail files
50 [ -f "$cf" ] && rm -f "$cf"
51 [ -d "$resolv_conf_dir" ] || mkdir -p "$resolv_conf_dir"
52 echo "$header" > "$cf"
53 if [ -f /etc/resolv.conf.head ]; then
54 cat /etc/resolv.conf.head >> "$cf"
55 else
56 echo "# /etc/resolv.conf.head can replace this line" >> "$cf"
57 fi
58 printf "$domain$search$servers" >> "$cf"
59 if [ -f /etc/resolv.conf.tail ]; then
60 cat /etc/resolv.conf.tail >> "$cf"
61 else
62 echo "# /etc/resolv.conf.tail can replace this line" >> "$cf"
63 fi
64 cat "$cf" > /etc/resolv.conf
65 chmod 644 /etc/resolv.conf
66 rm -f "$cf"
67 }
68
69 add_resolv_conf()
70 {
71 local x= conf="$signature\n"
72
73 # If we don't have any configuration, remove it
74 if [ -z "$new_domain_name_servers" -a \
75 -z "$new_domain_name" -a \
76 -z "$new_domain_search" ]; then
77 remove_resolv_conf
78 return $?
79 fi
80
81 if [ -n "$new_domain_name" ]; then
82 set -- $new_domain_name
83 new_domain_name="$1"
84 conf="${conf}domain $new_domain_name\n"
85 # Support RFC violating search in domain
86 if [ -z "$new_domain_search" -a -n "$2" ]; then
87 new_domain_search="$@"
88 fi
89 fi
90 if [ -n "$new_domain_search" ]; then
91 conf="${conf}search $new_domain_search\n"
92 fi
93 for x in ${new_domain_name_servers}; do
94 conf="${conf}nameserver $x\n"
95 done
96 if type resolvconf >/dev/null 2>&1; then
97 [ -n "$metric" ] && export IF_METRIC="$metric"
98 printf "$conf" | resolvconf -a "$interface"
99 return $?
100 fi
101
102 if [ -e "$resolv_conf_dir/$interface" ]; then
103 rm -f "$resolv_conf_dir/$interface"
104 fi
105 [ -d "$resolv_conf_dir" ] || mkdir -p "$resolv_conf_dir"
106 printf "$conf" > "$resolv_conf_dir/$interface"
107 build_resolv_conf
108 }
109
110 remove_resolv_conf()
111 {
112 if type resolvconf >/dev/null 2>&1; then
113 resolvconf -d "$interface" -f
114 else
115 if [ -e "$resolv_conf_dir/$interface" ]; then
116 rm -f "$resolv_conf_dir/$interface"
117 fi
118 build_resolv_conf
119 fi
120 }
121
122 case "$reason" in
123 BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT|STATIC) add_resolv_conf;;
124 PREINIT|EXPIRE|FAIL|IPV4LL|NAK|NOCARRIER|RELEASE|STOP) remove_resolv_conf;;
125 esac
OLDNEW
« no previous file with comments | « dhcpcd-hooks/10-mtu ('k') | dhcpcd-hooks/29-lookup-hostname » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698