blob: 9ec27fb62c43e8b5629e76a2b28ef3a704a0c68c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#! /bin/bash
. /usr/lib/network/network
ethernet_up() {
load_profile $1
if [[ ! -e /sys/class/net/"$INTERFACE" ]]; then
if ! echo "$INTERFACE"|grep ":"; then
err_append "interface $INTERFACE does not exist"
return 1
fi
fi
# Connection check
if ip link show "$INTERFACE"|grep -q "NO-CARRIER"; then
err_append "no connection available"
return 1
fi
ifconfig "$INTERFACE" up
# Some hardware is not immediately ready after ifconfig up
while ip link show $INTERFACE|grep -q "state UNKNOWN"; do
sleep 0.5
done
if checkyesno "${AUTH8021X:-no}"; then
. "${SUBR_DIR}"/8021x
[[ -z "$WPA_CONF" ]] && WPA_CONF="/etc/wpa_supplicant.conf"
[[ -z "$WPA_OPTS" ]] && WPA_OPTS="-Dwired"
start_wpa "$INTERFACE" "$WPA_CONF" "$WPA_OPTS"
if ! wpa_check "$INTERFACE"; then
ifconfig "$INTERFACE" down
return 1
fi
fi
case $IP in
dhcp)
if checkyesno "${DHCLIENT:-no}"; then
rm -r /var/run/dhclient-${INTERFACE}.pid >/dev/null 2>&1
if ! dhclient -q -e TIMEOUT="${DHCP_TIMEOUT:-10}" -pf /var/run/dhclient-${INTERFACE}.pid $INTERFACE; then
err_append "DHCP IP lease attempt failed."
return 1
fi
else
# Clear remaining pid files.
rm -f /var/run/dhcpcd-${INTERFACE}.{pid,cache} >/dev/null 2>&1
# If using own dns, tell dhcpcd to NOT replace resolv.conf
[[ -n "$DNS1" ]] && DHCP_OPTIONS="-C resolv.conf $DHCP_OPTIONS"
# Start dhcpcd
if ! dhcpcd -qL -t "${DHCP_TIMEOUT:-10}" $DHCP_OPTIONS "$INTERFACE"; then
err_append "DHCP IP lease attempt failed."
return 1
fi
fi
[[ -n "$IFOPTS" ]] && ifconfig "$INTERFACE" $IFOPTS
;;
static)
if ! ifconfig "$INTERFACE" $IFOPTS up; then
err_append "Bringing interface up failed."
return 1
fi
# bring up the default route (gateway)
if [[ -n "$GATEWAY" ]]; then
if ! route add default gw $GATEWAY; then
err_append "Adding gateway failed."
return 1
fi
fi
;;
*)
err_append "IP=\"\" must be either 'dhcp' or 'static'."
return 1
;;
esac
# set the hostname
if [[ -n "$HOSTNAME" ]]; then
if ! hostname "$HOSTNAME"; then
err_append "Setting hostname failed."
return 1
fi
fi
# Generate a new resolv.conf
if [[ -n "$DNS1" ]] || [[ -n "$DNS" ]]; then
: >/etc/resolv.conf
[[ -n "$DOMAIN" ]] && echo "domain $DOMAIN" >>/etc/resolv.conf
[[ -n "$SEARCH" ]] && echo "search $SEARCH" >>/etc/resolv.conf
[[ -n "$DNS1" ]] && echo "nameserver $DNS1" >>/etc/resolv.conf
[[ -n "$DNS2" ]] && echo "nameserver $DNS2" >>/etc/resolv.conf
if [[ -n "$DNS" ]]; then
for dns in "${DNS[@]}"; do
echo "nameserver $dns" >>/etc/resolv.conf
done
fi
fi
return 0
}
ethernet_down() {
load_profile $1
case $IP in
dhcp)
if checkyesno "${DHCLIENT:-no}"; then
if [[ -f /var/run/dhclient-${INTERFACE}.pid ]]; then
kill `cat /var/run/dhclient-${INTERFACE}.pid`
fi
else
if [[ -f /var/run/dhcpcd-${INTERFACE}.pid ]]; then
dhcpcd -qx "$INTERFACE"
fi
fi
;;
static)
[[ -n "$GATEWAY" ]] && route del default gw $GATEWAY
;;
esac
ifconfig $INTERFACE 0.0.0.0
case "$CONNECTION" in # Keep interface up for wireless
ethernet|ethernet-old)
quirk "nodown" || ifconfig $INTERFACE down
;;
esac
}
ethernet_$1 $2
exit $?
# vim: set ts=4 et sw=4:
|