40network: install dhclient, brctl and ifenslave optionally
[dracut.git] / modules.d / 40network / module-setup.sh
blobf32745c17cdd5ac6e6e82e6e8fc917d1faf39c02
1 #!/bin/bash
2 # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
3 # ex: ts=8 sw=4 sts=4 et filetype=sh
5 check() {
6 . $dracutfunctions
8 for program in ip arping; do
9 if ! type -P $program >/dev/null; then
10 derror "Could not find program \"$program\" required by network."
11 return 1
13 done
15 return 255
18 depends() {
19 [ -d /etc/sysconfig/network-scripts/ ] && echo ifcfg
20 return 0
23 installkernel() {
24 # Include wired net drivers, excluding wireless
26 net_module_test() {
27 local net_drivers='eth_type_trans|register_virtio_device'
28 local unwanted_drivers='/(wireless|isdn|uwb)/'
29 egrep -q $net_drivers "$1" && \
30 egrep -qv 'iw_handler_get_spy' "$1" && \
31 [[ ! $1 =~ $unwanted_drivers ]]
34 instmods $(filter_kernel_modules net_module_test)
36 instmods ecb arc4
37 # bridge modules
38 instmods bridge stp llc
39 instmods ipv6
40 # bonding
41 instmods bonding
44 install() {
45 dracut_install ip arping tr
46 dracut_install -o dhclient brctl ifenslave
47 inst "$moddir/ifup" "/sbin/ifup"
48 inst "$moddir/netroot" "/sbin/netroot"
49 inst "$moddir/dhclient-script" "/sbin/dhclient-script"
50 inst "$moddir/dhclient.conf" "/etc/dhclient.conf"
51 inst_hook pre-udev 50 "$moddir/ifname-genrules.sh"
52 inst_hook pre-udev 60 "$moddir/net-genrules.sh"
53 inst_hook cmdline 91 "$moddir/dhcp-root.sh"
54 inst_hook cmdline 96 "$moddir/parse-bond.sh"
55 inst_hook cmdline 97 "$moddir/parse-bridge.sh"
56 inst_hook cmdline 98 "$moddir/parse-ip-opts.sh"
57 inst_hook cmdline 99 "$moddir/parse-ifname.sh"
58 inst_hook pre-pivot 10 "$moddir/kill-dhclient.sh"
60 arch=$(uname -m)
62 for dir in "$usrlibdir/tls/$arch" "$usrlibdir/tls" "$usrlibdir/$arch" \
63 "$usrlibdir" "$libdir"; do
64 for i in "$dir"/libnss_dns.so.* "$dir"/libnss_mdns4_minimal.so.*; do
65 [ -e "$i" ] && dracut_install "$i"
66 done
67 done