Merge remote-tracking branch 'thingos/dev' into dev

This commit is contained in:
Calin Crisan 2019-12-19 23:54:16 +02:00
commit 66d97932f8
3 changed files with 81 additions and 41 deletions

View File

@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Busybox version: 1.29.3
# Thu Oct 31 23:22:38 2019
# Wed Dec 18 22:45:43 2019
#
CONFIG_HAVE_DOT_CONFIG=y
@ -381,9 +381,9 @@ CONFIG_RESET=y
# Debian Utilities
#
# CONFIG_PIPE_PROGRESS is not set
# CONFIG_RUN_PARTS is not set
# CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS is not set
# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
CONFIG_RUN_PARTS=y
CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
CONFIG_FEATURE_RUN_PARTS_FANCY=y
# CONFIG_START_STOP_DAEMON is not set
# CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS is not set
# CONFIG_FEATURE_START_STOP_DAEMON_FANCY is not set
@ -857,15 +857,15 @@ CONFIG_DNSDOMAINNAME=y
# CONFIG_FEATURE_IFCONFIG_HW is not set
# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
# CONFIG_IFENSLAVE is not set
# CONFIG_IFPLUGD is not set
CONFIG_IFPLUGD=y
CONFIG_IFUP=y
CONFIG_IFDOWN=y
CONFIG_IFUPDOWN_IFSTATE_PATH=""
# CONFIG_FEATURE_IFUPDOWN_IP is not set
# CONFIG_FEATURE_IFUPDOWN_IPV4 is not set
# CONFIG_FEATURE_IFUPDOWN_IPV6 is not set
CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
CONFIG_FEATURE_IFUPDOWN_IP=y
CONFIG_FEATURE_IFUPDOWN_IPV4=y
CONFIG_FEATURE_IFUPDOWN_IPV6=y
# CONFIG_FEATURE_IFUPDOWN_MAPPING is not set
# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP=y
# CONFIG_INETD is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO is not set
# CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD is not set

View File

@ -1,10 +1,15 @@
#!/bin/bash
DH_CONF="/var/cache/dhclient.conf"
WATCH_CONF="/data/etc/watch.conf"
SYS_STATIC_CONF="/etc/static_ip.conf"
BOOT_STATIC_CONF="/boot/static_ip.conf"
STATIC_CONF="/data/etc/static_ip.conf"
WATCH_CONF="/data/etc/watch.conf"
SYS_INTERFACES_CONF="/etc/network/interfaces"
BOOT_INTERFACES_CONF="/boot/network/interfaces"
INTERFACES_CONF="/data/etc/network/interfaces"
LINK_NEGO_TIMEOUT=10
@ -16,6 +21,8 @@ source ${WATCH_CONF}
prepare_conf ${STATIC_CONF} ${SYS_STATIC_CONF} ${BOOT_STATIC_CONF}
test -r ${STATIC_CONF} && source ${STATIC_CONF}
prepare_conf ${INTERFACES_CONF} ${SYS_INTERFACES_CONF} ${BOOT_INTERFACES_CONF}
mkdir -p /var/lib/dhcp
@ -57,7 +64,11 @@ watch_ip() {
}
start_lo() {
ifconfig lo up
if [[ -r ${INTERFACES_CONF} ]] && grep -q "^iface lo" ${INTERFACES_CONF}; then
ifup -i ${INTERFACES_CONF} lo 2>&1 | logger -t network
else
ifconfig lo up
fi
}
start_wlan() {
@ -76,13 +87,18 @@ start_wlan() {
ip link set mtu ${mtu} dev ${OS_WLAN}
fi
if [[ -n "${STATIC_IP}" ]]; then
msg_done ${STATIC_IP}
ifconfig ${OS_WLAN} ${STATIC_IP} up
STATIC_IP="" # won't be used again
if [[ -r ${INTERFACES_CONF} ]] && grep -q "^iface ${OS_WLAN}" ${INTERFACES_CONF}; then
ifup -i ${INTERFACES_CONF} ${OS_WLAN} 2>&1 | logger -t network
test ${PIPESTATUS[0]} == 0 && msg_done || msg_fail
else
msg_done dhcp
dhclient -cf "${DH_CONF}" ${OS_WLAN}
if [[ -n "${STATIC_IP}" ]]; then
msg_done ${STATIC_IP}
ifconfig ${OS_WLAN} ${STATIC_IP} up
STATIC_IP="" # won't be used again
else
msg_done dhcp
dhclient -cf "${DH_CONF}" ${OS_WLAN}
fi
fi
if [[ "${IP_WATCH}" == "true" ]] && ip addr show dev ${OS_WLAN} | grep inet &>/dev/null; then
@ -136,13 +152,18 @@ start_eth() {
ip link set mtu ${mtu} dev ${OS_ETH}
fi
if [[ -n "${STATIC_IP}" ]]; then
msg_done ${STATIC_IP}
ifconfig ${OS_ETH} ${STATIC_IP} up
STATIC_IP="" # won't be used again
if [[ -r ${INTERFACES_CONF} ]] && grep -q "^iface ${OS_ETH}" ${INTERFACES_CONF}; then
ifup -i ${INTERFACES_CONF} ${OS_ETH} 2>&1 | logger -t network
test ${PIPESTATUS[0]} == 0 && msg_done || msg_fail
else
msg_done dhcp
dhclient -cf "${DH_CONF}" ${OS_ETH}
if [[ -n "${STATIC_IP}" ]]; then
msg_done ${STATIC_IP}
ifconfig ${OS_ETH} ${STATIC_IP} up
STATIC_IP="" # won't be used again
else
msg_done dhcp
dhclient -cf "${DH_CONF}" ${OS_ETH}
fi
fi
if [[ "${LINK_WATCH}" == "true" ]]; then
@ -163,15 +184,17 @@ start() {
test "${OS_NETWORKLESS}" == "true" && return 0
ssid=$(cat /data/etc/wpa_supplicant.conf 2>&1 | grep ssid | grep -v scan_ssid | cut -d '"' -f 2)
test -n "${ssid}" && start_wlan && wlan_ok="ok"
test -n "${OS_WLAN}" -a -n "${ssid}" && start_wlan && wlan_ok="ok"
test -r /data/etc/ppp/modem && ifconfig | grep ${OS_PPP} &>/dev/null && ppp_ok="ok"
test -n "${OS_PPP}" -a -r /data/etc/ppp/modem && ifconfig | grep ${OS_PPP} &>/dev/null && ppp_ok="ok"
# if wifi or ppp link ok, start eth in background
if [[ "${wlan_ok}" == "ok" ]] || [[ "${ppp_ok}" == "ok" ]]; then
start_eth &>/dev/null &
else
start_eth && eth_ok="ok"
if [[ -n "${OS_ETH}" ]]; then
# if wifi or ppp link ok, start eth in background
if [[ "${wlan_ok}" == "ok" ]] || [[ "${ppp_ok}" == "ok" ]]; then
start_eth &>/dev/null &
else
start_eth && eth_ok="ok"
fi
fi
if [[ "${eth_ok}" != "ok" ]] && [[ "${wlan_ok}" != "ok" ]] && [[ "${ppp_ok}" != "ok" ]]; then
@ -185,23 +208,39 @@ start() {
fi
fi
if [[ -n "${STATIC_GW}" ]]; then
msg_begin "Setting static gateway to ${STATIC_GW}"
ip route add default via ${STATIC_GW}
test $? == 0 && msg_done || msg_fail
fi
if [[ -r ${INTERFACES_CONF} ]]; then
# ifup doesn't set the DNS server, so we have to set it manually
STATIC_DNS=$(cat ${INTERFACES_CONF} | grep dns-nameserver | tr -s ' ' | cut -d ' ' -f 3 | head -n 11)
if [[ -n "${STATIC_DNS}" ]]; then
msg_begin "Setting static DNS server to ${STATIC_DNS}"
echo "nameserver ${STATIC_DNS}" > /etc/resolv.conf
test $? == 0 && msg_done || msg_fail
fi
# Make sure all auto interfaces are brought up
ifup -i ${INTERFACES_CONF} -a >/dev/null
else
if [[ -n "${STATIC_GW}" ]]; then
msg_begin "Setting static gateway to ${STATIC_GW}"
ip route add default via ${STATIC_GW}
test $? == 0 && msg_done || msg_fail
fi
if [[ -n "${STATIC_DNS}" ]]; then
msg_begin "Setting static DNS server to ${STATIC_DNS}"
echo "nameserver ${STATIC_DNS}" > /etc/resolv.conf
test $? == 0 && msg_done || msg_fail
if [[ -n "${STATIC_DNS}" ]]; then
msg_begin "Setting static DNS server to ${STATIC_DNS}"
echo "nameserver ${STATIC_DNS}" > /etc/resolv.conf
test $? == 0 && msg_done || msg_fail
fi
fi
}
stop() {
msg_begin "Stopping network"
killall dhclient &>/dev/null
if [[ -r ${INTERFACES_CONF} ]]; then
ifdown -i ${INTERFACES_CONF} -a 2>&1 | logger -t network
fi
ps | grep S40network | grep -v $$ | grep -v grep | tr -s ' ' | sed -e 's/^\s//' | cut -d ' ' -f 1 | xargs -r kill
killall dhclient &>/dev/null
msg_done
}

View File

@ -55,6 +55,7 @@ prepare_conf() {
fi
if [[ ! -e "${actual_conf}" && -e "${system_conf}" ]]; then
mkdir -p $(dirname "${actual_conf}")
cp "${system_conf}" "${actual_conf}"
fi
}