Magellan Linux

Annotation of /trunk/dracut/patches/dracut-044-network-support-udhcpc-dhcpcd.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2727 - (hide annotations) (download)
Mon Nov 30 10:44:31 2015 UTC (8 years, 6 months ago) by niro
File size: 18007 byte(s)
-rediffed patches for dracut-044
1 niro 2727 diff -Naur dracut-044/modules.d/40network/dhcpcd-script.sh dracut-044-magellan/modules.d/40network/dhcpcd-script.sh
2     --- dracut-044/modules.d/40network/dhcpcd-script.sh 1970-01-01 01:00:00.000000000 +0100
3     +++ dracut-044-magellan/modules.d/40network/dhcpcd-script.sh 2015-11-30 11:07:30.863845155 +0100
4     @@ -0,0 +1,194 @@
5     +#!/bin/sh
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     +setup_interface() {
16     + ip=$new_ip_address
17     + mtu=$new_interface_mtu
18     + mask=$new_subnet_mask
19     + bcast=$new_broadcast_address
20     + gw=${new_routers%%,*}
21     + domain=$new_domain_name
22     + search=$(printf -- "$new_domain_search")
23     + namesrv=$new_domain_name_servers
24     + hostname=$new_host_name
25     + [ -n "$new_dhcp_lease_time" ] && lease_time=$new_dhcp_lease_time
26     + [ -n "$new_max_life" ] && lease_time=$new_max_life
27     + preferred_lft=$lease_time
28     + [ -n "$new_preferred_life" ] && preferred_lft=$new_preferred_life
29     +
30     + [ -f /tmp/net.$netif.override ] && . /tmp/net.$netif.override
31     +
32     + # Taken from debian dhclient-script:
33     + # The 576 MTU is only used for X.25 and dialup connections
34     + # where the admin wants low latency. Such a low MTU can cause
35     + # problems with UDP traffic, among other things. As such,
36     + # disallow MTUs from 576 and below by default, so that broken
37     + # MTUs are ignored, but higher stuff is allowed (1492, 1500, etc).
38     + if [ -n "$mtu" ] && [ $mtu -gt 576 ] ; then
39     + if ! ip link set $netif mtu $mtu ; then
40     + ip link set $netif down
41     + ip link set $netif mtu $mtu
42     + linkup $netif
43     + fi
44     + fi
45     +
46     + ip addr add $ip${mask:+/$mask} ${bcast:+broadcast $bcast} dev $netif \
47     + ${lease_time:+valid_lft $lease_time} \
48     + ${preferred_lft:+preferred_lft ${preferred_lft}}
49     +
50     + if [ -n "$gw" ] ; then
51     + if [ "$mask" = "255.255.255.255" ] ; then
52     + # point-to-point connection => set explicit route to gateway
53     + echo ip route add $gw dev $netif > /tmp/net.$netif.gw
54     + fi
55     + echo ip route replace default via $gw dev $netif >> /tmp/net.$netif.gw
56     + fi
57     +
58     + if getargbool 1 rd.peerdns; then
59     + [ -n "${search}${domain}" ] && echo "search $search $domain" > /tmp/net.$netif.resolv.conf
60     + if [ -n "$namesrv" ] ; then
61     + for s in $namesrv; do
62     + echo nameserver $s
63     + done
64     + fi >> /tmp/net.$netif.resolv.conf
65     + fi
66     + # Note: hostname can be fqdn OR short hostname, so chop off any
67     + # trailing domain name and explicity add any domain if set.
68     + [ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
69     +}
70     +
71     +setup_interface6() {
72     + domain=$new_domain_name
73     + search=$(printf -- "$new_domain_search")
74     + namesrv=$new_domain_name_servers
75     + hostname=$new_host_name
76     + [ -n "$new_dhcp_lease_time" ] && lease_time=$new_dhcp_lease_time
77     + [ -n "$new_max_life" ] && lease_time=$new_max_life
78     + preferred_lft=$lease_time
79     + [ -n "$new_preferred_life" ] && preferred_lft=$new_preferred_life
80     +
81     + [ -f /tmp/net.$netif.override ] && . /tmp/net.$netif.override
82     +
83     + ip -6 addr add ${new_ip6_address}/${new_ip6_prefixlen} \
84     + dev ${netif} scope global \
85     + ${lease_time:+valid_lft $lease_time} \
86     + ${preferred_lft:+preferred_lft ${preferred_lft}}
87     +
88     + if getargbool 1 rd.peerdns; then
89     + [ -n "${search}${domain}" ] && echo "search $search $domain" > /tmp/net.$netif.resolv.conf
90     + if [ -n "$namesrv" ] ; then
91     + for s in $namesrv; do
92     + echo nameserver $s
93     + done
94     + fi >> /tmp/net.$netif.resolv.conf
95     + fi
96     +
97     + # Note: hostname can be fqdn OR short hostname, so chop off any
98     + # trailing domain name and explicity add any domain if set.
99     + [ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname
100     +}
101     +
102     +case $reason in
103     + PREINIT)
104     + echo "dhcp: PREINIT $netif up"
105     + linkup $netif
106     + ;;
107     +
108     + PREINIT6)
109     + echo "dhcp: PREINIT6 $netif up"
110     + linkup $netif
111     + wait_for_ipv6_dad $netif
112     + ;;
113     +
114     + BOUND)
115     + echo "dhcp: BOND setting $netif"
116     + unset layer2
117     + if [ -f /sys/class/net/$netif/device/layer2 ]; then
118     + read layer2 < /sys/class/net/$netif/device/layer2
119     + fi
120     + if [ "$layer2" != "0" ]; then
121     + if ! arping -f -q -D -c 2 -I $netif $new_ip_address ; then
122     + warn "Duplicate address detected for $new_ip_address while doing dhcp. retrying"
123     + exit 1
124     + fi
125     + fi
126     + unset layer2
127     + setup_interface
128     + set | while read line || [ -n "$line" ]; do
129     + [ "${line#new_}" = "$line" ] && continue
130     + echo "$line"
131     + done >/tmp/dhcpcd.$netif.dhcpopts
132     +
133     + {
134     + echo '. /lib/net-lib.sh'
135     + echo "setup_net $netif"
136     + echo "source_hook initqueue/online $netif"
137     + [ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
138     + echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
139     + } > $hookdir/initqueue/setup_net_$netif.sh
140     +
141     + echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue/finished/dhcpcd-$netif.sh
142     + >/tmp/net.$netif.up
143     + if [ -e /sys/class/net/${netif}/address ]; then
144     + > /tmp/net.$(cat /sys/class/net/${netif}/address).up
145     + fi
146     +
147     + ;;
148     +
149     + RENEW|REBIND)
150     + unset lease_time
151     + [ -n "$new_dhcp_lease_time" ] && lease_time=$new_dhcp_lease_time
152     + [ -n "$new_max_life" ] && lease_time=$new_max_life
153     + preferred_lft=$lease_time
154     + [ -n "$new_preferred_life" ] && preferred_lft=$new_preferred_life
155     + ip -4 addr change ${new_ip_address}/${new_subnet_mask} broadcast ${new_broadcast_address} dev ${interface} \
156     + ${lease_time:+valid_lft $lease_time} ${preferred_lft:+preferred_lft ${preferred_lft}} \
157     + >/dev/null 2>&1
158     + ;;
159     +
160     + BOUND6)
161     + echo "dhcp: BOND6 setting $netif"
162     + setup_interface6
163     +
164     + set | while read line || [ -n "$line" ]; do
165     + [ "${line#new_}" = "$line" ] && continue
166     + echo "$line"
167     + done >/tmp/dhcpcd.$netif.dhcpopts
168     +
169     + {
170     + echo '. /lib/net-lib.sh'
171     + echo "setup_net $netif"
172     + echo "source_hook initqueue/online $netif"
173     + [ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
174     + echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
175     + } > $hookdir/initqueue/setup_net_$netif.sh
176     +
177     + echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue/finished/dhcpcd-$netif.sh
178     + >/tmp/net.$netif.up
179     + if [ -e /sys/class/net/${netif}/address ]; then
180     + > /tmp/net.$(cat /sys/class/net/${netif}/address).up
181     + fi
182     + ;;
183     +
184     + RENEW6|REBIND6)
185     + unset lease_time
186     + [ -n "$new_dhcp_lease_time" ] && lease_time=$new_dhcp_lease_time
187     + [ -n "$new_max_life" ] && lease_time=$new_max_life
188     + preferred_lft=$lease_time
189     + [ -n "$new_preferred_life" ] && preferred_lft=$new_preferred_life
190     + ip -6 addr change ${new_ip6_address}/${new_ip6_prefixlen} dev ${interface} scope global \
191     + ${lease_time:+valid_lft $lease_time} ${preferred_lft:+preferred_lft ${preferred_lft}} \
192     + >/dev/null 2>&1
193     + ;;
194     +
195     + *) echo "dhcp: $reason";;
196     +esac
197     +
198     +exit 0
199     diff -Naur dracut-044/modules.d/40network/ifup.sh dracut-044-magellan/modules.d/40network/ifup.sh
200     --- dracut-044/modules.d/40network/ifup.sh 2015-11-25 14:22:28.000000000 +0100
201     +++ dracut-044-magellan/modules.d/40network/ifup.sh 2015-11-30 11:25:08.061792465 +0100
202     @@ -10,6 +10,23 @@
203     type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
204     type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
205    
206     +# load magellan settings
207     +[ -f /etc/conf.d/network ] && . /etc/conf.d/network
208     +# some sane defaults
209     +if [[ -n $DEFAULT_DHCP_PROG ]]
210     +then
211     + DHCP_PROG="$DEFAULT_DHCP_PROG"
212     +else
213     + DHCP_PROG="/sbin/dhcpcd"
214     +fi
215     +if [[ -n $DEFAULT_DHCP_START ]]
216     +then
217     + DHCP_START="$DEFAULT_DHCP_START"
218     +else
219     + DHCP_START="-t 10"
220     +fi
221     +DHCP_PROG_NAME="${DHCP_PROG##*/}"
222     +
223     # Huh? No $1?
224     [ -z "$1" ] && exit 1
225    
226     @@ -89,6 +106,9 @@
227    
228     # Run dhclient
229     do_dhcp() {
230     + local opts
231     + local timeoutswitch
232     +
233     # dhclient-script will mark the netif up and generate the online
234     # event for nfsroot
235     # XXX add -V vendor class and option parsing per kernel
236     @@ -105,20 +125,37 @@
237     return 1
238     fi
239    
240     + case $DHCP_PROG_NAME in
241     + dhclient)
242     + opts="$@ -1 -q"
243     + opts+=" -cf /etc/dhclient.conf"
244     + opts+=" -pf /tmp/$DHCP_PROG_NAME.$netif.pid"
245     + opts+=" -lf /tmp/$DHCP_PROG_NAME.$netif.lease"
246     + timeoutswitch="-timeout"
247     + ;;
248     +
249     + dhcpcd)
250     + opts="$@ -q"
251     + timeoutswitch="--timeout"
252     + ;;
253     +
254     + udhcpc)
255     + opts="-q"
256     + opts+=" -p /tmp/$DHCP_PROG_NAME.$netif.pid"
257     + timeoutswitch="--timeout"
258     + ;;
259     + esac
260     +
261     while [ $_COUNT -lt $_DHCPRETRY ]; do
262     - info "Starting dhcp for interface $netif"
263     - dhclient "$@" \
264     - ${_timeout:+-timeout $_timeout} \
265     - -q \
266     - -cf /etc/dhclient.conf \
267     - -pf /tmp/dhclient.$netif.pid \
268     - -lf /tmp/dhclient.$netif.lease \
269     - $netif \
270     + info "Starting dhcp ($DHCP_PROG_NAME) for interface $netif"
271     + $DHCP_PROG $opts \
272     + ${_timeout:+$timeoutswitch $_timeout} \
273     + $DHCP_START $netif \
274     && return 0
275     _COUNT=$(($_COUNT+1))
276     [ $_COUNT -lt $_DHCPRETRY ] && sleep 1
277     done
278     - warn "dhcp for interface $netif failed"
279     + warn "dhcp ($DHCP_PROG_NAME) for interface $netif failed"
280     return 1
281     }
282    
283     diff -Naur dracut-044/modules.d/40network/kill-dhcpcd.sh dracut-044-magellan/modules.d/40network/kill-dhcpcd.sh
284     --- dracut-044/modules.d/40network/kill-dhcpcd.sh 1970-01-01 01:00:00.000000000 +0100
285     +++ dracut-044-magellan/modules.d/40network/kill-dhcpcd.sh 2015-11-30 11:28:36.339251470 +0100
286     @@ -0,0 +1,17 @@
287     +#!/bin/sh
288     +
289     +for f in /tmp/dhcpcd.*.pid \
290     + /run/dhcpcd.*.pid /run/dhcpcd.pid; do
291     + [ -e $f ] || continue
292     + read PID < $f;
293     + kill $PID >/dev/null 2>&1
294     +done
295     +
296     +sleep 0.1
297     +
298     +for f in /tmp/dhcpcd.*.pid \
299     + /run/dhcpcd.*.pid /run/dhcpcd.pid; do
300     + [ -e $f ] || continue
301     + read PID < $f;
302     + kill -9 $PID >/dev/null 2>&1
303     +done
304     diff -Naur dracut-044/modules.d/40network/kill-udhcpc.sh dracut-044-magellan/modules.d/40network/kill-udhcpc.sh
305     --- dracut-044/modules.d/40network/kill-udhcpc.sh 1970-01-01 01:00:00.000000000 +0100
306     +++ dracut-044-magellan/modules.d/40network/kill-udhcpc.sh 2015-11-30 11:31:03.830427861 +0100
307     @@ -0,0 +1,17 @@
308     +#!/bin/sh
309     +
310     +for f in /tmp/udhcpc.*.pid \
311     + /run/udhcpc.*.pid /run/udhcpc.pid; do
312     + [ -e $f ] || continue
313     + read PID < $f;
314     + kill $PID >/dev/null 2>&1
315     +done
316     +
317     +sleep 0.1
318     +
319     +for f in /tmp/udhcpc.*.pid \
320     + /run/udhcpc.*.pid /run/udhcpc.pid; do
321     + [ -e $f ] || continue
322     + read PID < $f;
323     + kill -9 $PID >/dev/null 2>&1
324     +done
325     diff -Naur dracut-044/modules.d/40network/module-setup.sh dracut-044-magellan/modules.d/40network/module-setup.sh
326     --- dracut-044/modules.d/40network/module-setup.sh 2015-11-25 14:22:28.000000000 +0100
327     +++ dracut-044-magellan/modules.d/40network/module-setup.sh 2015-11-30 11:34:12.360076369 +0100
328     @@ -3,8 +3,9 @@
329     # called by dracut
330     check() {
331     local _program
332     + . /etc/conf.d/network
333    
334     - require_binaries ip arping dhclient || return 1
335     + require_binaries ip ifconfig route arping $DEFAULT_DHCP_PROG || return 1
336    
337     return 255
338     }
339     @@ -23,17 +24,20 @@
340     # called by dracut
341     install() {
342     local _arch _i _dir
343     - inst_multiple ip arping dhclient sed
344     + local _dhcp_prog_name
345     + local _file
346     + . /etc/conf.d/network
347     + _dhcp_prog_name="${DEFAULT_DHCP_PROG##*/}"
348     +
349     + inst_multiple ip arping $_dhcp_prog_name sed
350     + inst_multiple ifconfig route
351     inst_multiple -o ping ping6
352     inst_multiple -o brctl
353     inst_multiple -o teamd teamdctl teamnl
354     inst_simple /etc/libnl/classid
355     inst_script "$moddir/ifup.sh" "/sbin/ifup"
356     inst_script "$moddir/netroot.sh" "/sbin/netroot"
357     - inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script"
358     inst_simple "$moddir/net-lib.sh" "/lib/net-lib.sh"
359     - inst_simple -H "/etc/dhclient.conf"
360     - cat "$moddir/dhclient.conf" >> "${initdir}/etc/dhclient.conf"
361     inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
362     inst_hook pre-udev 60 "$moddir/net-genrules.sh"
363     inst_hook cmdline 91 "$moddir/dhcp-root.sh"
364     @@ -44,7 +48,30 @@
365     inst_hook cmdline 97 "$moddir/parse-bridge.sh"
366     inst_hook cmdline 98 "$moddir/parse-ip-opts.sh"
367     inst_hook cmdline 99 "$moddir/parse-ifname.sh"
368     - inst_hook cleanup 10 "$moddir/kill-dhclient.sh"
369     + case $_dhcp_prog_name in
370     + dhclient)
371     + inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script"
372     + inst_simple -H "/etc/dhclient.conf"
373     + cat "$moddir/dhclient.conf" >> "${initdir}/etc/dhclient.conf"
374     + inst_hook cleanup 10 "$moddir/kill-dhclient.sh"
375     + ;;
376     +
377     + udhcpc)
378     + inst_script "$moddir/udhcpc-script.sh" "/usr/share/udhcpc/default.script"
379     + inst_hook cleanup 10 "$moddir/kill-udhcpc.sh"
380     + ;;
381     +
382     + dhcpcd)
383     + inst_simple "/etc/dhcpcd.conf"
384     + inst_script -o /usr/lib/dhcpcd/dhcpcd-run-hooks
385     + for _file in $(find /usr/lib/dhcpcd/dhcpcd-hooks -type f); do
386     + inst_simple -o $_file
387     + done
388     + inst_simple "$moddir/dhcpcd-script.sh" "/usr/lib/dhcpcd/dhcpcd-hooks/90-netroot"
389     + inst_hook cleanup 10 "$moddir/kill-dhcpcd.sh"
390     + ;;
391     + esac
392     + inst_simple /etc/conf.d/network
393    
394     _arch=$(uname -m)
395    
396     diff -Naur dracut-044/modules.d/40network/net-lib.sh dracut-044-magellan/modules.d/40network/net-lib.sh
397     --- dracut-044/modules.d/40network/net-lib.sh 2015-11-25 14:22:28.000000000 +0100
398     +++ dracut-044-magellan/modules.d/40network/net-lib.sh 2015-11-30 11:36:40.217220446 +0100
399     @@ -118,6 +118,8 @@
400     [ -e /tmp/net.$netif.hostname ] && . /tmp/net.$netif.hostname
401     [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override
402     [ -e /tmp/dhclient.$netif.dhcpopts ] && . /tmp/dhclient.$netif.dhcpopts
403     + [ -e /tmp/udhcpc.$netif.dhcpopts ] && . /tmp/udhcpc.$netif.dhcpopts
404     + [ -e /tmp/dhcpcd.$netif.dhcpopts ] && . /tmp/dhcpcd.$netif.dhcpopts
405     # set up resolv.conf
406     [ -e /tmp/net.$netif.resolv.conf ] && \
407     cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf
408     @@ -189,6 +191,12 @@
409     for f in /tmp/dhclient.$i.*; do
410     [ -f $f ] && cp -f $f /tmp/net.${f#/tmp/dhclient.}
411     done
412     + for f in /tmp/udhcpc.$i.*; do
413     + [ -f $f ] && cp -f $f /tmp/net.${f#/tmp/udhcpc.}
414     + done
415     + for f in /tmp/dhcpcd.$i.*; do
416     + [ -f $f ] && cp -f $f /tmp/net.${f#/tmp/dhcpcd.}
417     + done
418     done
419     echo $IFACES > /tmp/.net.ifaces.new
420     mv /tmp/.net.ifaces.new /tmp/net.ifaces
421     diff -Naur dracut-044/modules.d/40network/udhcpc-script.sh dracut-044-magellan/modules.d/40network/udhcpc-script.sh
422     --- dracut-044/modules.d/40network/udhcpc-script.sh 1970-01-01 01:00:00.000000000 +0100
423     +++ dracut-044-magellan/modules.d/40network/udhcpc-script.sh 2015-11-30 11:40:04.848639915 +0100
424     @@ -0,0 +1,102 @@
425     +#!/bin/sh
426     +
427     +# global options passed by udhcpc
428     +# what to run
429     +# $1 - which command to run, possible are: bound|deconfig|nak|renew
430     +# router - routers address
431     +# subnet - the subnet
432     +# dhcptype - type of dhcp
433     +# interface - which iface gets configured
434     +# serverid - ip of the dhcd server
435     +# dns - dns to use
436     +# ip - ip-address to use
437     +# lease - lease time of a dhcp configuration
438     +# mask - network mask to use
439     +
440     +PATH=/usr/sbin:/usr/bin:/sbin:/bin
441     +
442     +type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
443     +type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh
444     +
445     +# We already need a set netif here
446     +netif="${interface}"
447     +
448     +# Huh? Interface configured?
449     +[ -f "/tmp/net.$netif.up" ] && exit 0
450     +
451     +# renew dhcp leases
452     +bound()
453     +{
454     + local RESOLV_CONF="/etc/resolv.conf"
455     + local BROADCAST
456     + local NETMASK
457     + local i
458     +
459     + [[ -n ${broadcast} ]] && BROADCAST="broadcast ${broadcast}"
460     + [[ -n ${subnet} ]] && NETMASK="netmask ${subnet}"
461     +
462     + /sbin/ifconfig ${interface} ${ip} ${BROADCAST} ${NETMASK}
463     +
464     + if [ -n "${router}" ]
465     + then
466     + echo "deleting routers"
467     + while /sbin/route del default gw 0.0.0.0 dev ${interface}
468     + do :
469     + done
470     +
471     + metric=0
472     + for i in ${router}
473     + do
474     + /sbin/route add default gw ${i} dev ${interface} metric $((metric++))
475     + done
476     + fi
477     +
478     + echo -n > ${RESOLV_CONF}
479     + [[ -n ${domain} ]] && echo "domain ${domain}" >> ${RESOLV_CONF}
480     + for i in ${dns}
481     + do
482     + echo adding dns ${i}
483     + echo "nameserver ${i}" >> ${RESOLV_CONF}
484     + done
485     +
486     + set | while read line; do
487     + [ "${line#new_}" = "$line" ] && continue
488     + echo "$line"
489     + done >/tmp/udhcpc.$netif.dhcpopts
490     +
491     + {
492     + echo '. /lib/net-lib.sh'
493     + echo "setup_net $netif"
494     + echo "source_hook initqueue/online $netif"
495     + [ -e /tmp/net.$netif.manualup ] || echo "/sbin/netroot $netif"
496     + echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
497     + } > $hookdir/initqueue/setup_net_$netif.sh
498     +
499     + echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue/finished/udhcpc-$netif.sh
500     + >/tmp/net.$netif.up
501     +}
502     +
503     +renew()
504     +{
505     + # same as bound()
506     + bound
507     +}
508     +
509     +deconfig()
510     +{
511     + /sbin/ifconfig ${interface} 0.0.0.0
512     +}
513     +
514     +# what to do if a dhcp request failed
515     +nak()
516     +{
517     + echo "Received a NAK: ${message}"
518     +}
519     +
520     +
521     +case $1 in
522     + bound) bound ;;
523     + renew) renew ;;
524     + deconfig) deconfig ;;
525     + nak) nak ;;
526     +esac