X-Git-Url: http://git.ozo.com/?a=blobdiff_plain;f=miniupnpd%2Ffiles%2Fminiupnpd.hotplug;h=65bc5006d1d518d8c8575b158474a9d36dbd9ee6;hb=3001d0ab41e30b236b7cdbd0674963bec59d4181;hp=a98a50cc441c5e66df70d46201f3e120d8377b63;hpb=6c553c24c0c10ae64f1077a3fa332b10fd0a2f41;p=lede-routing%2F.git diff --git a/miniupnpd/files/miniupnpd.hotplug b/miniupnpd/files/miniupnpd.hotplug index a98a50c..65bc500 100644 --- a/miniupnpd/files/miniupnpd.hotplug +++ b/miniupnpd/files/miniupnpd.hotplug @@ -1,9 +1,6 @@ #!/bin/sh -if [ ! /etc/init.d/miniupnpd enabled ] -then - exit 0 -fi +/etc/init.d/miniupnpd enabled || exit 0 . /lib/functions/service.sh @@ -14,18 +11,31 @@ fi # - check only on ifup (otherwise lease updates etc would cause # miniupnpd state loss) - [ ! "$ACTION" = "ifup" ] && service_check /usr/sbin/miniupnpd && exit 0 local iface -local ext_iface -local ext_iface6 +local ifname +local tmpconf="/var/etc/miniupnpd.conf" +local extiface=$(uci get upnpd.config.external_iface) +local extzone=$(uci get upnpd.config.external_zone) . /lib/functions/network.sh -network_find_wan ext_iface -network_find_wan6 ext_iface6 -for iface in $ext_iface $ext_iface6 $(uci_get upnpd config internal_iface; uci_get upnpd config external_iface); do +for iface in $(uci get upnpd.config.internal_iface); do network_get_device device $iface [ "$DEVICE" = "$device" ] && /etc/init.d/miniupnpd restart && exit 0 done + + +if [ -z "$extiface" ] ; then + # manual external zone (if dynamically find interfaces + # belonging to it) overrides network_find_wan* + if [ -n "$extzone" ] ; then + ifname=$(fw3 -q zone $extzone | head -1) + fi + [ -n "$extiface" ] || network_find_wan extiface + [ -n "$extiface" ] || network_find_wan6 extiface +fi + +[ -n "$ifname" ] || network_get_device ifname ${extiface} +grep -q "ext_ifname=$ifname" $tmpconf || /etc/init.d/miniupnpd restart