forked from libretro/Lakka-LibreELEC
118 lines
3.0 KiB
Bash
Executable File
118 lines
3.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
ACTION=$1
|
|
|
|
LOGGER_TAG="rdu-network"
|
|
MODEL=$(cat /sys/firmware/devicetree/base/model)
|
|
|
|
IP_IFACE=""
|
|
BR_NAME=""
|
|
BR_IFACES=""
|
|
UNUSED_IFACES=""
|
|
USED_IFACES=""
|
|
|
|
function log
|
|
{
|
|
logger -t "${LOGGER_TAG}" "$@"
|
|
}
|
|
|
|
function logerr
|
|
{
|
|
logger -t "${LOGGER_TAG}" -p "err" "$@"
|
|
}
|
|
|
|
# Select setup based on model
|
|
|
|
case "${MODEL}" in
|
|
"ZII RDU2+ Board" | "ZII RDU2 Board")
|
|
log "Loading RDU2 networking setup..."
|
|
IP_IFACE="eth1"
|
|
BR_NAME="br0"
|
|
BR_IFACES="netaux netleft netright gigabit_proc"
|
|
ALL_IFACES="eth0 ${IP_IFACE} ${BR_IFACES} ${BR_NAME}"
|
|
;;
|
|
"ZII RDU1 Board")
|
|
log "Loading RDU1 networking setup..."
|
|
IP_IFACE="br0"
|
|
BR_NAME="br0"
|
|
BR_IFACES="netaux netleft netright"
|
|
ALL_IFACES="eth0 ${BR_NAME} ${BR_IFACES}"
|
|
;;
|
|
*)
|
|
logerr "invalid hardware model detected: ${MODEL}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "${ACTION}" in
|
|
|
|
"start")
|
|
|
|
# Assume RDU network is already started if the bridge is available
|
|
if [ -d /sys/class/net/${BR_NAME} ]; then
|
|
log "Networking setup is already started"
|
|
exit 0
|
|
fi
|
|
|
|
# Cleanup all addresses from all interfaces and bring them down
|
|
log "Resetting interfaces..."
|
|
for IFACE in ${ALL_IFACES}; do
|
|
log " Resetting ${IFACE}..."
|
|
ip addr flush dev ${IFACE} >/dev/null 2>&1
|
|
ip link set dev ${IFACE} down >/dev/null 2>&1
|
|
done
|
|
|
|
# Create bridge with all interfaces
|
|
log "Creating bridge interface..."
|
|
brctl addbr ${BR_NAME} >/dev/null 2>&1
|
|
for IFACE in ${BR_IFACES}; do
|
|
log " Adding ${IFACE} to bridge..."
|
|
brctl addif ${BR_NAME} ${IFACE} >/dev/null 2>&1
|
|
done
|
|
|
|
# Bring all bridge interfaces and the bridge itself up
|
|
log "Bringing up all interfaces..."
|
|
for IFACE in ${ALL_IFACES}; do
|
|
log " Bringing up ${IFACE}..."
|
|
ip link set dev ${IFACE} up >/dev/null 2>&1
|
|
done
|
|
|
|
# All done
|
|
log "RDU networking started"
|
|
exit 0
|
|
;;
|
|
|
|
"stop")
|
|
|
|
# Assume RDU network is already stopped if the bridge is available
|
|
if [ ! -d /sys/class/net/${BR_NAME} ]; then
|
|
log "Networking setup is already stopped"
|
|
exit 0
|
|
fi
|
|
|
|
# Cleanup all addresses from all interfaces and bring them down
|
|
log "Resetting interfaces..."
|
|
for IFACE in ${ALL_IFACES}; do
|
|
ip addr flush dev ${IFACE} >/dev/null 2>&1
|
|
ip link set dev ${IFACE} down >/dev/null 2>&1
|
|
done
|
|
|
|
# Remove bridge interfaces and bridge itself
|
|
log "Removing bridge interface..."
|
|
for IFACE in ${BR_IFACES}; do
|
|
brctl delif ${BR_NAME} ${IFACE} >/dev/null 2>&1
|
|
done
|
|
brctl delbr ${BR_NAME} >/dev/null 2>&1
|
|
|
|
# All done
|
|
log "RDU networking stopped"
|
|
exit 0
|
|
;;
|
|
|
|
*)
|
|
logerr "invalid action requested: ${ACTION}"
|
|
exit 2
|
|
;;
|
|
esac
|
|
|