Magellan Linux

Contents of /trunk/dracut/patches/dracut-037-network-support-udhcpc-dhcpcd-2.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2481 - (show annotations) (download)
Fri Jul 11 12:08:21 2014 UTC (9 years, 9 months ago) by niro
File size: 11772 byte(s)
-added missing udhcpc/dhcpcd client script which respect netroot
1 diff -Naur dracut-037/modules.d/40network/dhcpcd-script.sh dracut-037-udhcpc/modules.d/40network/dhcpcd-script.sh
2 --- dracut-037/modules.d/40network/dhcpcd-script.sh 1970-01-01 01:00:00.000000000 +0100
3 +++ dracut-037-udhcpc/modules.d/40network/dhcpcd-script.sh 2014-07-11 18:22:19.200620077 +0200
4 @@ -0,0 +1,30 @@
5 +# start netroot
6 +
7 +PATH=/usr/sbin:/usr/bin:/sbin:/bin
8 +
9 +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
10 +type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
11 +
12 +# We already need a set netif here
13 +netif="$interface"
14 +
15 +# Huh? Interface configured?
16 +[ -f "/tmp/net.$netif.up" ] && exit 0
17 +
18 +if [ "$reason" = "BOUND" ]; then
19 + set | while read line; do
20 + [ "${line#new_}" = "$line" ] && continue
21 + echo "$line"
22 + done >/tmp/dhcpcd.$netif.dhcpopts
23 +
24 + {
25 + echo '. /lib/net-lib.sh'
26 + echo "setup_net $netif"
27 + echo "source_hook initqueue/online $netif"
28 + [ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
29 + echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
30 + } > $hookdir/initqueue/setup_net_$netif.sh
31 +
32 + echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue/finished/dhcpcd-$netif.sh
33 + >/tmp/net.$netif.up
34 +fi
35 diff -Naur dracut-037/modules.d/40network/ifup.sh dracut-037-udhcpc/modules.d/40network/ifup.sh
36 --- dracut-037/modules.d/40network/ifup.sh 2014-03-19 17:16:08.000000000 +0100
37 +++ dracut-037-udhcpc/modules.d/40network/ifup.sh 2014-07-11 18:21:46.055620310 +0200
38 @@ -12,6 +12,23 @@
39 type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
40 type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
41
42 +# load magellan settings
43 +[ -f /etc/conf.d/network ] && . /etc/conf.d/network
44 +# some sane defaults
45 +if [[ -n $DEFAULT_DHCP_PROG ]]
46 +then
47 + DHCP_PROG="$DEFAULT_DHCP_PROG"
48 +else
49 + DHCP_PROG="/sbin/dhcpcd"
50 +fi
51 +if [[ -n $DEFAULT_DHCP_START ]]
52 +then
53 + DHCP_START="$DEFAULT_DHCP_START"
54 +else
55 + DHCP_START="-t 10"
56 +fi
57 +DHCP_PROG_NAME="${DHCP_PROG##*/}"
58 +
59 # Huh? No $1?
60 [ -z "$1" ] && exit 1
61
62 @@ -90,6 +107,8 @@
63
64 # Run dhclient
65 do_dhcp() {
66 + local opts
67 +
68 # dhclient-script will mark the netif up and generate the online
69 # event for nfsroot
70 # XXX add -V vendor class and option parsing per kernel
71 @@ -100,9 +119,27 @@
72 echo "No carrier detected"
73 return 1
74 fi
75 - echo "Starting dhcp for interface $netif"
76 - dhclient "$@" -1 -q -cf /etc/dhclient.conf -pf /tmp/dhclient.$netif.pid -lf /tmp/dhclient.$netif.lease $netif \
77 - || echo "dhcp failed"
78 +
79 + case $DHCP_PROG_NAME in
80 + dhclient)
81 + opts="$@ -1 -q"
82 + opts+=" -cf /etc/dhclient.conf"
83 + opts+=" -pf /tmp/$DHCP_PROG_NAME.$netif.pid"
84 + opts+=" -lf /tmp/$DHCP_PROG_NAME.$netif.lease"
85 + ;;
86 +
87 + dhcpcd)
88 + opts="$@ -q"
89 + ;;
90 +
91 + udhcpc)
92 + opts="-q"
93 + opts+=" -p /tmp/$DHCP_PROG_NAME.$netif.pid"
94 + ;;
95 + esac
96 +
97 + echo "Starting dhcp ($DHCP_PROG_NAME) for interface $netif"
98 + $DHCP_PROG $opts $DHCP_START $netif || echo "dhcp failed"
99 }
100
101 load_ipv6() {
102 diff -Naur dracut-037/modules.d/40network/kill-dhcpcd.sh dracut-037-udhcpc/modules.d/40network/kill-dhcpcd.sh
103 --- dracut-037/modules.d/40network/kill-dhcpcd.sh 1970-01-01 01:00:00.000000000 +0100
104 +++ dracut-037-udhcpc/modules.d/40network/kill-dhcpcd.sh 2014-07-11 18:21:46.056620310 +0200
105 @@ -0,0 +1,17 @@
106 +#!/bin/sh
107 +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
108 +# ex: ts=8 sw=4 sts=4 et filetype=sh
109 +
110 +for f in /run/dhcpcd.*.pid /run/dhcpcd.pid; do
111 + [ -e $f ] || continue
112 + read PID < $f;
113 + kill $PID >/dev/null 2>&1
114 +done
115 +
116 +sleep 0.1
117 +
118 +for f in /tmp/dhcpcd.*.pid /run/dhcpcd.pid; do
119 + [ -e $f ] || continue
120 + read PID < $f;
121 + kill -9 $PID >/dev/null 2>&1
122 +done
123 diff -Naur dracut-037/modules.d/40network/kill-udhcpc.sh dracut-037-udhcpc/modules.d/40network/kill-udhcpc.sh
124 --- dracut-037/modules.d/40network/kill-udhcpc.sh 1970-01-01 01:00:00.000000000 +0100
125 +++ dracut-037-udhcpc/modules.d/40network/kill-udhcpc.sh 2014-07-11 18:21:46.056620310 +0200
126 @@ -0,0 +1,17 @@
127 +#!/bin/sh
128 +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
129 +# ex: ts=8 sw=4 sts=4 et filetype=sh
130 +
131 +for f in /tmp/udhcpc.*.pid; do
132 + [ -e $f ] || continue
133 + read PID < $f;
134 + kill $PID >/dev/null 2>&1
135 +done
136 +
137 +sleep 0.1
138 +
139 +for f in /tmp/udhcpc.*.pid; do
140 + [ -e $f ] || continue
141 + read PID < $f;
142 + kill -9 $PID >/dev/null 2>&1
143 +done
144 diff -Naur dracut-037/modules.d/40network/module-setup.sh dracut-037-udhcpc/modules.d/40network/module-setup.sh
145 --- dracut-037/modules.d/40network/module-setup.sh 2014-03-19 17:16:08.000000000 +0100
146 +++ dracut-037-udhcpc/modules.d/40network/module-setup.sh 2014-07-11 18:24:15.631619260 +0200
147 @@ -5,8 +5,9 @@
148 # called by dracut
149 check() {
150 local _program
151 + . /etc/conf.d/network
152
153 - require_binaries ip arping dhclient || return 1
154 + require_binaries ip ifconfig route arping $DEFAULT_DHCP_PROG || return 1
155
156 return 255
157 }
158 @@ -72,16 +73,20 @@
159 # called by dracut
160 install() {
161 local _arch _i _dir
162 - inst_multiple ip arping dhclient sed
163 + local _dhcp_prog_name
164 + local _file
165 + . /etc/conf.d/network
166 + _dhcp_prog_name="${DEFAULT_DHCP_PROG##*/}"
167 +
168 + inst_multiple ip arping $_dhcp_prog_name sed
169 + inst_multiple ifconfig route
170 inst_multiple -o ping ping6
171 inst_multiple -o brctl
172 inst_multiple -o teamd teamdctl teamnl
173 inst_simple /etc/libnl/classid
174 inst_script "$moddir/ifup.sh" "/sbin/ifup"
175 inst_script "$moddir/netroot.sh" "/sbin/netroot"
176 - inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script"
177 inst_simple "$moddir/net-lib.sh" "/lib/net-lib.sh"
178 - inst_simple "$moddir/dhclient.conf" "/etc/dhclient.conf"
179 inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
180 inst_hook pre-udev 60 "$moddir/net-genrules.sh"
181 inst_hook cmdline 91 "$moddir/dhcp-root.sh"
182 @@ -92,7 +97,29 @@
183 inst_hook cmdline 97 "$moddir/parse-bridge.sh"
184 inst_hook cmdline 98 "$moddir/parse-ip-opts.sh"
185 inst_hook cmdline 99 "$moddir/parse-ifname.sh"
186 - inst_hook cleanup 10 "$moddir/kill-dhclient.sh"
187 + case $_dhcp_prog_name in
188 + dhclient)
189 + inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script"
190 + inst_simple "$moddir/dhclient.conf" "/etc/dhclient.conf"
191 + inst_hook cleanup 10 "$moddir/kill-dhclient.sh"
192 + ;;
193 +
194 + udhcpc)
195 + inst_script "$moddir/udhcpc-script.sh" "/usr/share/udhcpc/default.script"
196 + inst_hook cleanup 10 "$moddir/kill-udhcpc.sh"
197 + ;;
198 +
199 + dhcpcd)
200 + inst_simple /etc/dhcpcd.conf
201 + inst_script -o /usr/lib/dhcpcd/dhcpcd-run-hooks
202 + for _file in $(find /usr/lib/dhcpcd/dhcpcd-hooks -type f); do
203 + inst_simple -o $_file
204 + done
205 + inst_simple "$moddir/dhcpcd-script.sh" "/usr/lib/dhcpcd/dhcpcd-hooks/90-netroot"
206 + inst_hook cleanup 10 "$moddir/kill-dhcpcd.sh"
207 + ;;
208 + esac
209 + inst_simple /etc/conf.d/network
210
211 _arch=$(uname -m)
212
213 diff -Naur dracut-037/modules.d/40network/net-lib.sh dracut-037-udhcpc/modules.d/40network/net-lib.sh
214 --- dracut-037/modules.d/40network/net-lib.sh 2014-03-19 17:16:08.000000000 +0100
215 +++ dracut-037-udhcpc/modules.d/40network/net-lib.sh 2014-07-11 18:21:46.057620310 +0200
216 @@ -99,6 +99,8 @@
217 [ -e /tmp/net.$netif.hostname ] && . /tmp/net.$netif.hostname
218 [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
219 [ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
220 + [ -e /tmp/udhcpc.$netif.dhcpopts ] && . /tmp/udhcpc.$netif.dhcpopts
221 + [ -e /tmp/dhcpcd.$netif.dhcpopts ] && . /tmp/dhcpcd.$netif.dhcpopts
222 # set up resolv.conf
223 [ -e /tmp/net.$netif.resolv.conf ] && \
224 cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf
225 @@ -148,6 +150,15 @@
226 for f in /tmp/dhclient.$i.*; do
227 [ -f $f ] && cp -f $f /tmp/net.${f#/tmp/dhclient.}
228 done
229 + for f in /tmp/udhcpc.$i.*; do
230 + [ -f $f ] && cp -f $f /tmp/net.${f#/tmp/udhcpc.}
231 + done
232 + for f in /run/dhcpcd.$i.*; do
233 + [ -f $f ] && cp -f $f /tmp/net.${f#/run/dhcpcd.}
234 + done
235 + for f in /var/lib/dhcpcd/dhcpcd.$i.*; do
236 + [ -f $f ] && cp -f $f /tmp/net.${f#/var/lib/dhcpcd/dhcpcd.}
237 + done
238 done
239 echo $IFACES > /tmp/.net.ifaces.new
240 mv /tmp/.net.ifaces.new /tmp/net.ifaces
241 diff -Naur dracut-037/modules.d/40network/netroot.sh dracut-037-udhcpc/modules.d/40network/netroot.sh
242 --- dracut-037/modules.d/40network/netroot.sh 2014-03-19 17:16:08.000000000 +0100
243 +++ dracut-037-udhcpc/modules.d/40network/netroot.sh 2014-07-11 18:21:46.057620310 +0200
244 @@ -38,6 +38,8 @@
245 if [ "$netroot" = "dhcp" ] || [ "$netroot" = "dhcp6" ] ; then
246 # Load dhcp options
247 [ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
248 + [ -e /tmp/udhcpc.$netif.dhcpopts ] && . /tmp/udhcpc.$netif.dhcpopts
249 + [ -e /tmp/dhcpcd.$netif.dhcpopts ] && . /tmp/dhcpcd.$netif.dhcpopts
250
251 # If we have a specific bootdev with no dhcpoptions or empty root-path,
252 # we die. Otherwise we just warn
253 diff -Naur dracut-037/modules.d/40network/udhcpc-script.sh dracut-037-udhcpc/modules.d/40network/udhcpc-script.sh
254 --- dracut-037/modules.d/40network/udhcpc-script.sh 1970-01-01 01:00:00.000000000 +0100
255 +++ dracut-037-udhcpc/modules.d/40network/udhcpc-script.sh 2014-07-11 18:22:16.296620098 +0200
256 @@ -0,0 +1,100 @@
257 +#!/bin/sh
258 +
259 +# global options passed by udhcpc
260 +# what to run
261 +# $1 - which command to run, possible are: bound|deconfig|nak|renew
262 +# router - routers address
263 +# subnet - the subnet
264 +# dhcptype - type of dhcp
265 +# interface - which iface gets configured
266 +# serverid - ip of the dhcd server
267 +# dns - dns to use
268 +# ip - ip-address to use
269 +# lease - lease time of a dhcp configuration
270 +# mask - network mask to use
271 +
272 +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
273 +type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
274 +
275 +# We already need a set netif here
276 +netif="${interface}"
277 +
278 +# Huh? Interface configured?
279 + [ -f "/tmp/net.$netif.up" ] && exit 0
280 +
281 +# renew dhcp leases
282 +bound()
283 +{
284 + local RESOLV_CONF="/etc/resolv.conf"
285 + local BROADCAST
286 + local NETMASK
287 + local i
288 +
289 + [[ -n ${broadcast} ]] && BROADCAST="broadcast ${broadcast}"
290 + [[ -n ${subnet} ]] && NETMASK="netmask ${subnet}"
291 +
292 + /sbin/ifconfig ${interface} ${ip} ${BROADCAST} ${NETMASK}
293 +
294 + if [ -n "${router}" ]
295 + then
296 + echo "deleting routers"
297 + while /sbin/route del default gw 0.0.0.0 dev ${interface}
298 + do :
299 + done
300 +
301 + metric=0
302 + for i in ${router}
303 + do
304 + /sbin/route add default gw ${i} dev ${interface} metric $((metric++))
305 + done
306 + fi
307 +
308 + echo -n > ${RESOLV_CONF}
309 + [[ -n ${domain} ]] && echo "domain ${domain}" >> ${RESOLV_CONF}
310 + for i in ${dns}
311 + do
312 + echo adding dns ${i}
313 + echo "nameserver ${i}" >> ${RESOLV_CONF}
314 + done
315 +
316 + set | while read line; do
317 + [ "${line#new_}" = "$line" ] && continue
318 + echo "$line"
319 + done >/tmp/udhcpc.$netif.dhcpopts
320 +
321 + {
322 + echo '. /lib/net-lib.sh'
323 + echo "setup_net $netif"
324 + echo "source_hook initqueue/online $netif"
325 + [ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
326 + echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
327 + } > $hookdir/initqueue/setup_net_$netif.sh
328 +
329 + echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue/finished/udhcpc-$netif.sh
330 + >/tmp/net.$netif.up
331 +}
332 +
333 +renew()
334 +{
335 + # same as bound()
336 + bound
337 +}
338 +
339 +deconfig()
340 +{
341 + /sbin/ifconfig ${interface} 0.0.0.0
342 +}
343 +
344 +# what to do if a dhcp request failed
345 +nak()
346 +{
347 + echo "Received a NAK: ${message}"
348 +}
349 +
350 +
351 +case $1 in
352 + bound) bound ;;
353 + renew) renew ;;
354 + deconfig) deconfig ;;
355 + nak) nak ;;
356 +esac