make.sh: Introduce DEFAULT_PARALLELISM
[ipfire-2.x.git] / src / installer / start-networking.sh
1 #!/bin/bash
2 ###############################################################################
3 #                                                                             #
4 # IPFire.org - A linux based firewall                                         #
5 # Copyright (C) 2014  IPFire Team  <info@ipfire.org>                          #
6 #                                                                             #
7 # This program is free software: you can redistribute it and/or modify        #
8 # it under the terms of the GNU General Public License as published by        #
9 # the Free Software Foundation, either version 3 of the License, or           #
10 # (at your option) any later version.                                         #
11 #                                                                             #
12 # This program is distributed in the hope that it will be useful,             #
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of              #
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
15 # GNU General Public License for more details.                                #
16 #                                                                             #
17 # You should have received a copy of the GNU General Public License           #
18 # along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
19 #                                                                             #
20 ###############################################################################
21
22 function list_interfaces() {
23         local interface
24
25         for interface in /sys/class/net/*; do
26                 [ -d "${interface}" ] || continue
27
28                 interface="$(basename ${interface})"
29                 case "${interface}" in
30                         eth*)
31                                 echo "${interface}"
32                                 ;;
33                 esac
34         done
35 }
36
37 function try_dhcp() {
38         local interface="${1}"
39
40         # Bring up the interface
41         ip link set "${interface}" up
42
43         # Try to make the lights of the adapter light up
44         ethtool -i "${interface}" &>/dev/null
45
46         # Start the DHCP client
47         dhcpcd "${interface}"
48 }
49
50 function main() {
51         local interface
52         for interface in $(list_interfaces); do
53                 if ! try_dhcp "${interface}"; then
54                         echo "Could not acquire an IP address on ${interface}"
55                         continue
56                 fi
57
58                 echo "Successfully started on ${interface}"
59
60                 # Wait until everything is settled
61                 sleep 15
62
63                 return 0
64         done
65
66         return 1
67 }
68
69 main