924b2363ab7ff6ef4085b1146ee629b1b4902772
[automated-distro-installer] / fai / config / scripts / DEBIAN / 30-interface
1 #! /bin/bash
2
3 error=0; trap 'error=$(($?>$error?$?:$error))' ERR # save maximum error code
4
5
6 newnicnames() {
7
8 # determine predictable network names only for stretch and above
9
10 [ $do_init_tasks -eq 0 ] && return
11
12 ver=$($ROOTCMD dpkg-query --showformat='${Version}' --show udev)
13 if dpkg --compare-versions $ver lt 220-7; then
14 return
15 fi
16
17 [ -z $NIC1 ] && return
18
19 fields="ID_NET_NAME_FROM_DATABASE ID_NET_NAME_ONBOARD ID_NET_NAME_SLOT ID_NET_NAME_PATH"
20 for field in $fields; do
21 name=$(udevadm info /sys/class/net/$NIC1 | sed -rn "s/^E: $field=(.+)/\1/p")
22 if [[ $name ]]; then
23 NIC1=$name
24 break
25 fi
26 done
27 if [[ ! $name ]]; then
28 echo "$0: error: could not find systemd predictable network name. Using $NIC1."
29 fi
30 }
31
32 newnicnames
33 CIDR=$(ip -o -f inet addr show $NIC1 | awk '{print $4}')
34 if ifclass DHCPC && [ $FAI_ACTION = "install" -o $FAI_ACTION = "dirinstall" ]; then
35
36 cat > $target/etc/network/interfaces <<-EOF
37 # generated by FAI
38 auto lo $NIC1
39 iface lo inet loopback
40 iface $NIC1 inet dhcp
41 EOF
42 elif [ $FAI_ACTION = "install" -o $FAI_ACTION = "dirinstall" ]; then
43 [ -n "$CIDR" ] && cat > $target/etc/network/interfaces <<-EOF
44 # generated by FAI
45 auto lo $NIC1
46 iface lo inet loopback
47 iface $NIC1 inet static
48 address $CIDR
49 gateway $GATEWAYS
50 EOF
51 [ -n "$NETWORK" ] && echo "localnet $NETWORK" > $target/etc/networks
52 if [ ! -L $target/etc/resolv.conf -a -e /etc/resolv.conf ]; then
53 cp -p /etc/resolv.conf $target/etc
54 fi
55 fi
56
57 # here fcopy is mostly used, when installing a client for running in a
58 # different subnet than during the installation
59 fcopy -iM /etc/resolv.conf
60 fcopy -iM /etc/network/interfaces /etc/networks
61
62 exit $error