3 PATH
=/usr
/sbin
:/usr
/bin
:/sbin
:/bin
5 type getarg
>/dev
/null
2>&1 || .
/lib
/dracut-lib.sh
6 type ip_to_var
>/dev
/null
2>&1 || .
/lib
/net-lib.sh
8 # We already need a set netif here
13 mtu
=$new_interface_mtu
15 bcast
=$new_broadcast_address
17 domain
=$new_domain_name
18 search
=$
(printf -- "$new_domain_search")
19 namesrv
=$new_domain_name_servers
20 hostname
=$new_host_name
21 [ -n "$new_dhcp_lease_time" ] && lease_time
=$new_dhcp_lease_time
22 [ -n "$new_max_life" ] && lease_time
=$new_max_life
23 preferred_lft
=$lease_time
24 [ -n "$new_preferred_life" ] && preferred_lft
=$new_preferred_life
26 [ -f /tmp
/net.
$netif.override
] && .
/tmp
/net.
$netif.override
28 # Taken from debian dhclient-script:
29 # The 576 MTU is only used for X.25 and dialup connections
30 # where the admin wants low latency. Such a low MTU can cause
31 # problems with UDP traffic, among other things. As such,
32 # disallow MTUs from 576 and below by default, so that broken
33 # MTUs are ignored, but higher stuff is allowed (1492, 1500, etc).
34 if [ -n "$mtu" ] && [ $mtu -gt 576 ] ; then
35 if ! ip link
set $netif mtu
$mtu ; then
36 ip link
set $netif down
37 ip link
set $netif mtu
$mtu
42 ip addr add
$ip${mask:+/$mask} ${bcast:+broadcast $bcast} dev
$netif \
43 ${lease_time:+valid_lft $lease_time} \
44 ${preferred_lft:+preferred_lft ${preferred_lft}}
46 if [ -n "$gw" ] ; then
47 if [ "$mask" = "255.255.255.255" ] ; then
48 # point-to-point connection => set explicit route to gateway
49 echo ip route add
$gw dev
$netif > /tmp
/net.
$netif.gw
53 IFS
=' ' read -r main_gw other_gw
54 echo ip route replace default via
$main_gw dev
$netif >> /tmp
/net.
$netif.gw
55 if [ -n "$other_gw" ] ; then
56 for g
in $other_gw; do
57 echo ip route add default via
$g dev
$netif >> /tmp
/net.
$netif.gw
63 if getargbool
1 rd.peerdns
; then
64 [ -n "${search}${domain}" ] && echo "search $search $domain" > /tmp
/net.
$netif.resolv.conf
65 if [ -n "$namesrv" ] ; then
69 fi >> /tmp
/net.
$netif.resolv.conf
71 # Note: hostname can be fqdn OR short hostname, so chop off any
72 # trailing domain name and explicity add any domain if set.
73 [ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp
/net.
$netif.hostname
77 domain
=$new_domain_name
78 search
=$
(printf -- "$new_domain_search")
79 namesrv
=$new_domain_name_servers
80 hostname
=$new_host_name
81 [ -n "$new_dhcp_lease_time" ] && lease_time
=$new_dhcp_lease_time
82 [ -n "$new_max_life" ] && lease_time
=$new_max_life
83 preferred_lft
=$lease_time
84 [ -n "$new_preferred_life" ] && preferred_lft
=$new_preferred_life
86 [ -f /tmp
/net.
$netif.override
] && .
/tmp
/net.
$netif.override
88 ip
-6 addr add
${new_ip6_address}/${new_ip6_prefixlen} \
89 dev
${netif} scope global \
90 ${lease_time:+valid_lft $lease_time} \
91 ${preferred_lft:+preferred_lft ${preferred_lft}}
93 if getargbool
1 rd.peerdns
; then
94 [ -n "${search}${domain}" ] && echo "search $search $domain" > /tmp
/net.
$netif.resolv.conf
95 if [ -n "$namesrv" ] ; then
99 fi >> /tmp
/net.
$netif.resolv.conf
102 # Note: hostname can be fqdn OR short hostname, so chop off any
103 # trailing domain name and explicity add any domain if set.
104 [ -n "$hostname" ] && echo "echo ${hostname%.$domain}${domain:+.$domain} > /proc/sys/kernel/hostname" > /tmp
/net.
$netif.hostname
108 while [ $# -ne 0 ]; do
112 # Is the destination a multicast group?
113 if [ $1 -ge 224 -a $1 -lt 240 ]; then
119 # Parse the arguments into a CIDR net/mask string
120 if [ $mask -gt 24 ]; then
121 destination
="$1.$2.$3.$4/$mask"
122 shift; shift; shift; shift
123 elif [ $mask -gt 16 ]; then
124 destination
="$1.$2.$3.0/$mask"
126 elif [ $mask -gt 8 ]; then
127 destination
="$1.$2.0.0/$mask"
129 elif [ $mask -gt 0 ]; then
130 destination
="$1.0.0.0/$mask"
133 destination
="0.0.0.0/$mask"
137 gateway
="$1.$2.$3.$4"
138 shift; shift; shift; shift
140 # Multicast routing on Linux
141 # - If you set a next-hop address for a multicast group, this breaks with Cisco switches
142 # - If you simply leave it link-local and attach it to an interface, it works fine.
143 if [ $multicast -eq 1 -o "$gateway" = "0.0.0.0" ]; then
144 temp_result
="$destination dev $interface"
146 temp_result
="$destination via $gateway dev $interface"
149 echo "/sbin/ip route add $temp_result"
156 echo "dhcp: PREINIT $netif up"
161 echo "dhcp: PREINIT6 $netif up"
163 wait_for_ipv6_dad_link
$netif
167 echo "dhcp: BOND setting $netif"
169 if [ -f /sys
/class
/net
/$netif/device
/layer2
]; then
170 read layer2
< /sys
/class
/net
/$netif/device
/layer2
172 if [ "$layer2" != "0" ]; then
173 if command -v arping2
>/dev
/null
; then
174 if arping2
-q -C 1 -c 2 -I $netif -0 $new_ip_address ; then
175 warn
"Duplicate address detected for $new_ip_address while doing dhcp. retrying"
179 if ! arping
-f -q -D -c 2 -I $netif $new_ip_address ; then
180 warn
"Duplicate address detected for $new_ip_address while doing dhcp. retrying"
187 set |
while read line ||
[ -n "$line" ]; do
188 [ "${line#new_}" = "$line" ] && continue
190 done >/tmp
/dhclient.
$netif.dhcpopts
193 echo '. /lib/net-lib.sh'
194 echo "setup_net $netif"
195 if [ -n "$new_classless_static_routes" ]; then
198 parse_option_121
$new_classless_static_routes
201 echo "source_hook initqueue/online $netif"
202 [ -e /tmp
/net.
$netif.manualup
] ||
echo "/sbin/netroot $netif"
203 echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
204 } > $hookdir/initqueue
/setup_net_
$netif.sh
206 echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue
/finished
/dhclient-
$netif.sh
208 if [ -e /sys
/class
/net
/${netif}/address
]; then
209 > /tmp
/net.$
(cat /sys
/class
/net
/${netif}/address
).up
216 [ -n "$new_dhcp_lease_time" ] && lease_time
=$new_dhcp_lease_time
217 [ -n "$new_max_life" ] && lease_time
=$new_max_life
218 preferred_lft
=$lease_time
219 [ -n "$new_preferred_life" ] && preferred_lft
=$new_preferred_life
220 ip
-4 addr change
${new_ip_address}/${new_subnet_mask} broadcast ${new_broadcast_address} dev ${interface} \
221 ${lease_time:+valid_lft $lease_time} ${preferred_lft:+preferred_lft ${preferred_lft}} \
226 echo "dhcp: BOND6 setting $netif"
229 set |
while read line ||
[ -n "$line" ]; do
230 [ "${line#new_}" = "$line" ] && continue
232 done >/tmp
/dhclient.
$netif.dhcpopts
235 echo '. /lib/net-lib.sh'
236 echo "setup_net $netif"
237 echo "source_hook initqueue/online $netif"
238 [ -e /tmp
/net.
$netif.manualup
] ||
echo "/sbin/netroot $netif"
239 echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
240 } > $hookdir/initqueue
/setup_net_
$netif.sh
242 echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue
/finished
/dhclient-
$netif.sh
244 if [ -e /sys
/class
/net
/${netif}/address
]; then
245 > /tmp
/net.$
(cat /sys
/class
/net
/${netif}/address
).up
251 [ -n "$new_dhcp_lease_time" ] && lease_time
=$new_dhcp_lease_time
252 [ -n "$new_max_life" ] && lease_time
=$new_max_life
253 preferred_lft
=$lease_time
254 [ -n "$new_preferred_life" ] && preferred_lft
=$new_preferred_life
255 ip
-6 addr change
${new_ip6_address}/${new_ip6_prefixlen} dev ${interface} scope global \
256 ${lease_time:+valid_lft $lease_time} ${preferred_lft:+preferred_lft ${preferred_lft}} \
260 *) echo "dhcp: $reason";;