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"
130 destination
="$1.0.0.0/$mask"
135 gateway
="$1.$2.$3.$4"
136 shift; shift; shift; shift
138 # Multicast routing on Linux
139 # - If you set a next-hop address for a multicast group, this breaks with Cisco switches
140 # - If you simply leave it link-local and attach it to an interface, it works fine.
141 if [ $multicast -eq 1 ]; then
142 temp_result
="$destination dev $interface"
144 temp_result
="$destination via $gateway dev $interface"
147 echo "/sbin/ip route add $temp_result"
154 echo "dhcp: PREINIT $netif up"
159 echo "dhcp: PREINIT6 $netif up"
161 wait_for_ipv6_dad_link
$netif
165 echo "dhcp: BOND setting $netif"
167 if [ -f /sys
/class
/net
/$netif/device
/layer2
]; then
168 read layer2
< /sys
/class
/net
/$netif/device
/layer2
170 if [ "$layer2" != "0" ]; then
171 if command -v arping2
>/dev
/null
; then
172 if arping2
-q -C 1 -c 2 -I $netif -0 $new_ip_address ; then
173 warn
"Duplicate address detected for $new_ip_address while doing dhcp. retrying"
177 if ! arping
-f -q -D -c 2 -I $netif $new_ip_address ; then
178 warn
"Duplicate address detected for $new_ip_address while doing dhcp. retrying"
185 set |
while read line ||
[ -n "$line" ]; do
186 [ "${line#new_}" = "$line" ] && continue
188 done >/tmp
/dhclient.
$netif.dhcpopts
191 echo '. /lib/net-lib.sh'
192 echo "setup_net $netif"
193 if [ -n "$new_classless_static_routes" ]; then
196 parse_option_121
$new_classless_static_routes
199 echo "source_hook initqueue/online $netif"
200 [ -e /tmp
/net.
$netif.manualup
] ||
echo "/sbin/netroot $netif"
201 echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
202 } > $hookdir/initqueue
/setup_net_
$netif.sh
204 echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue
/finished
/dhclient-
$netif.sh
206 if [ -e /sys
/class
/net
/${netif}/address
]; then
207 > /tmp
/net.$
(cat /sys
/class
/net
/${netif}/address
).up
214 [ -n "$new_dhcp_lease_time" ] && lease_time
=$new_dhcp_lease_time
215 [ -n "$new_max_life" ] && lease_time
=$new_max_life
216 preferred_lft
=$lease_time
217 [ -n "$new_preferred_life" ] && preferred_lft
=$new_preferred_life
218 ip
-4 addr change
${new_ip_address}/${new_subnet_mask} broadcast ${new_broadcast_address} dev ${interface} \
219 ${lease_time:+valid_lft $lease_time} ${preferred_lft:+preferred_lft ${preferred_lft}} \
224 echo "dhcp: BOND6 setting $netif"
227 set |
while read line ||
[ -n "$line" ]; do
228 [ "${line#new_}" = "$line" ] && continue
230 done >/tmp
/dhclient.
$netif.dhcpopts
233 echo '. /lib/net-lib.sh'
234 echo "setup_net $netif"
235 echo "source_hook initqueue/online $netif"
236 [ -e /tmp
/net.
$netif.manualup
] ||
echo "/sbin/netroot $netif"
237 echo "rm -f -- $hookdir/initqueue/setup_net_$netif.sh"
238 } > $hookdir/initqueue
/setup_net_
$netif.sh
240 echo "[ -f /tmp/net.$netif.did-setup ]" > $hookdir/initqueue
/finished
/dhclient-
$netif.sh
242 if [ -e /sys
/class
/net
/${netif}/address
]; then
243 > /tmp
/net.$
(cat /sys
/class
/net
/${netif}/address
).up
249 [ -n "$new_dhcp_lease_time" ] && lease_time
=$new_dhcp_lease_time
250 [ -n "$new_max_life" ] && lease_time
=$new_max_life
251 preferred_lft
=$lease_time
252 [ -n "$new_preferred_life" ] && preferred_lft
=$new_preferred_life
253 ip
-6 addr change
${new_ip6_address}/${new_ip6_prefixlen} dev ${interface} scope global \
254 ${lease_time:+valid_lft $lease_time} ${preferred_lft:+preferred_lft ${preferred_lft}} \
258 *) echo "dhcp: $reason";;