#!/bin/sh /etc/rc.common START=90 STOP=10 USE_PROCD=1 PROG=/usr/sbin/udp-broadcast-relay-redux NAME=udp-broadcast-relay-redux PIDCOUNT=0 validate_section_udp_broadcast_relay_redux() { uci_validate_section udp_broadcast_relay_redux udp_broadcast_relay_redux "${1}" \ 'id:uinteger' \ 'port:port' \ 'network:list(string)' \ 'src_override:ip4addr' \ 'dest_override:ip4addr' \ 'multicast:ip4addr' [ -z "$id" ] && return 1 [ -z "$network" ] && return 1 [ -z "$port" ] && return 1 return 0 } udp_broadcast_relay_redux_instance() { local net network ifname id port src_override dest_override multicast validate_section_udp_broadcast_relay_redux "${1}" || { echo "Validation failed" return 1 } PIDCOUNT="$((PIDCOUNT + 1))" procd_open_instance procd_set_param command "$PROG" "--id" "${id}" "--port" "${port}" for net in $network; do network_get_device ifname "$net" if [ -z "$ifname" ]; then network_get_physdev ifname "$net" fi if [ -n "$ifname" ]; then procd_append_param command "--dev" "$ifname" procd_append_param netdev "$ifname" fi done if [ -n "$src_override" ] ; then procd_append_param command "-s" "$src_override" fi if [ -n "$dest_override" ] ; then procd_append_param command "-t" "$dest_override" fi if [ -n "$multicast" ] ; then procd_append_param command "--multicast" "$multicast" fi procd_add_jail ubr-${PIDCOUNT} cgroupsns procd_close_instance } start_service() { . /lib/functions.sh . /lib/functions/network.sh config_load udp_broadcast_relay_redux config_foreach udp_broadcast_relay_redux_instance udp_broadcast_relay_redux } service_triggers() { procd_add_reload_trigger "udp_broadcast_relay_redux" procd_add_validation validate_section_udp_broadcast_relay_redux }